|
|
|
Проектирование БД
|
|||
|---|---|---|---|
|
#18+
Добрый день, уважаемые форумчане! Необходимо в БД хранить данные рекордов. Для каждого типа рекорда существует отдельная таблица (например таблица Running - для рекордов по бегу, HighJump - для прыжков в высоту). Так же есть общая таблица(Records), в которой хранится общая информация о рекорде(дата, время, id пользователя и т. д.). Так вот необходимо настроить связи между таблицей Records и таблицами Running, HighJumps, например в таблице Records выбирается тип рекорда и по нему происходит связь с соответствующей таблицей. Строго не судите, в проектировании БД я чайник)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 15:25 |
|
||
|
Проектирование БД
|
|||
|---|---|---|---|
|
#18+
JurikDM, У вас таблица `records` во множественном числе, остальные в единственном. Удобнее если все одинаково, я предпочитаю единственное число. Код: sql 1. 2. 3. 4. 5. 6. 7. По-английски это называется “exclusive subtype tables”, не знаю русского названия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 16:07 |
|
||
|
Проектирование БД
|
|||
|---|---|---|---|
|
#18+
vyegorov Код: sql 1. так ведь поле record_type находится в таблице record, а не в high_jump ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 15:03 |
|
||
|
Проектирование БД
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat, Да, я его дублирую. Да, это избыточность. Но это дает больше возможностей контролировать данные на уровне СУБД. Всегда так делаю для подобных Моделей. Я предпочитаю не делать FK на справочник типов, т.к. для вторичных таблиц значение всегда одно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 18:38 |
|
||
|
Проектирование БД
|
|||
|---|---|---|---|
|
#18+
vyegorov, да, я тоже делал подобную функциональность, дублировал поле. но тогда надо создать foreign key по комбинации полей. чтобы гарантировать соответствие record_type в общей таблице и в частной. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:50 |
|
||
|
Проектирование БД
|
|||
|---|---|---|---|
|
#18+
JurikDM, Наверное, правильнее будет создать столбец "тип рекорда" (и туда записывать id дисциплины, в которой установлен рекорд; есессно, понадобится отдельный справочник дисциплин), а не создавать на каждый чих новую таблицу Running, HighJumps, ... Facepalms ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:12 |
|
||
|
Проектирование БД
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatvyegorov, да, я тоже делал подобную функциональность, дублировал поле. но тогда надо создать foreign key по комбинации полей. чтобы гарантировать соответствие record_type в общей таблице и в частной. Код: sql 1. Да, вы правы. Без такого FK получается, что один родитель может иметь несколько наследованных записей в разных таблицах. AO_MMMJurikDM, Наверное, правильнее будет создать столбец "тип рекорда" (и туда записывать id дисциплины, в которой установлен рекорд; есессно, понадобится отдельный справочник дисциплин), а не создавать на каждый чих новую таблицу Running, HighJumps, ... Facepalms ... Речь идет не столько о типе записи, сколько о наборе дополнительных полей, специфичных для каждого из типов, которые будут храниться в отдельных таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:21 |
|
||
|
Проектирование БД
|
|||
|---|---|---|---|
|
#18+
vyegorov, я как -то просматривал возможность пользовать tableoid (т.е. name::regclass::oid) в кач-ве части ключа. но это, к сож., инстансозависимо, и надо перестраивать всё при восстановлениях из бекапа. Т.е. не полетело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:30 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=114&tid=1998138]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 347ms |

| 0 / 0 |
