Shared pk works just fine:

db.define_table(
    'datetime_duration',
    Field('superclass','reference duration') ,
    primarykey = ['superclass']
)
воскресенье, 18 октября 2020 г. в 02:23:00 UTC+3, BigBaaadBob: 

> It's hard to believe that I was talking about this in 2013 
> <https://groups.google.com/g/web2py/c/Vh-J2AQ-mBE/m/xOMh3mm7ovEJ>, but 
> here it is again!
>
> I'm wondering if you can directly implement the Table-per-type or 
> Shared-primary-key method of inheritance in the DAL?
>
> [image: subclass-gradstu-scheme.gif]
>
> The standard DAL inheritance method (including a table as a field) is a 
> Table-per-concrete approach that has pros and cons. In particular for me, 
> it is harder to deal with the common stuff (the stuff in the superclass) 
> with the standard DAL method.  In many cases I never need to refer to the 
> subclass specifics.
>
> The best I have been able to do is something like the below. There is a 
> lot of common stuff in the duration table (and, btw, the duration can be 
> overridden and isn't necessarily the difference of the start and stop 
> values in the subclasses). Depending on how the time is tracked, there are 
> different algorithms used to compute a duration, for  example subtracting 
> two datetimes or subtracting two floats (representing hours).
>
> db.define_table(
>     'duration',
>     # Common stuff
>     Field('duration','decimal(10,2)',notnull=True),
> )
>
> db.define_table(
>     'datetime_duration',
>     Field('superclass','reference duration',unique=True,notnull=True),
>     Field('start','datetime',notnull=True),
>     Field('stop','datetime',notnull=True),
> )
>
> db.define_table(
>     'hour_duration',
>     Field('superclass','reference duration',unique=True,notnull=True),
>     Field('start','decimal(10,2)',notnull=True),
>     Field('stop','decimal(10,2)',notnull=True),
> )
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/b74dbd9a-249c-4d4f-8497-b820ae3cc16en%40googlegroups.com.

Reply via email to