|
|
|
Альтернативные наборы столбцов в таблице
|
|||
|---|---|---|---|
|
#18+
Доброе время суток! Стоит задача реализовать логику следующего содержания. Есть набор элементов, который выделен в некоторую сущность базы данных: idname1Элемент 12Элемент 23Элемент 3 Каждый из элементов должен обладать одним из представленных наборов свойств: Свойство a1Свойство a2Свойство a3xyz Свойство b1Свойство b2lmno Т.е. в результате (если мы объединим все данные) мы должны получить нечто подобное: idnameСвойство a1Свойство a2Свойство a3Свойство b1Свойство b21Элемент 1xyz2Элемент 2lm3Элемент 3no Элемент не может обладать обоими из наборов, и не может не обладать ни одним из них. Поэтому базу надо спроектировать так, чтоб это условие соблюдалось. И желательно без контроля вставляемых значений с помощью триггеров и прочих средств. Т.е. здесь мы имеем дело с неким подобием вертикальной разбивки на отдельные сущности, объединенные отношением один-к-одному. Но связываемые с основной таблицей сущности должны быть взаимоисключающими. Как это можно сделать? Заранее спасибо за помощь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 12:08 |
|
||
|
Альтернативные наборы столбцов в таблице
|
|||
|---|---|---|---|
|
#18+
У Вас уже есть готовая структура, только пририсуйте к таблицам с свойствами столбец для определения элемента к которому относяться данные свойства! P.S. - простите меня глупого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 13:49 |
|
||
|
Альтернативные наборы столбцов в таблице
|
|||
|---|---|---|---|
|
#18+
monseniorУ Вас уже есть готовая структура, только пририсуйте к таблицам с свойствами столбец для определения элемента к которому относяться данные свойства! В этом случае не всегда будут соблюдены условия "элемент не может обладать обоими из наборов, и не может не обладать ни одним из них". Т.е. на уровне базы данных нужно не допустить такой ситуации, когда, например, строчки [x, y, z] и [l, m] будут ссылаться на Элемент 1, а Элемент 2 останется вообще без свойств. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 14:04 |
|
||
|
Альтернативные наборы столбцов в таблице
|
|||
|---|---|---|---|
|
#18+
mcrssmonseniorУ Вас уже есть готовая структура, только пририсуйте к таблицам с свойствами столбец для определения элемента к которому относяться данные свойства! В этом случае не всегда будут соблюдены условия "элемент не может обладать обоими из наборов, и не может не обладать ни одним из них". Т.е. на уровне базы данных нужно не допустить такой ситуации, когда, например, строчки [x, y, z] и [l, m] будут ссылаться на Элемент 1, а Элемент 2 останется вообще без свойств. пример данных Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. в чем трудность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 20:36 |
|
||
|
Альтернативные наборы столбцов в таблице
|
|||
|---|---|---|---|
|
#18+
monsenior Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. в чем трудность? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2009, 02:54 |
|
||
|
Альтернативные наборы столбцов в таблице
|
|||
|---|---|---|---|
|
#18+
id name 1 Элемент 1 2 Элемент 2 3 Элемент 3 (ИД элемента) (Свойство a1/свойство b1) (Свойство a2/Свойство b2) (Свойство a3) 1 x y z 2 z y f 3 a k null (ИД элемента) - уникальный ключ в последней таблице так будет конролироваться необходимая уникальность, но свойства придётся хранить в одной таблице и разделить их по "типу свойства" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2009, 09:55 |
|
||
|
Альтернативные наборы столбцов в таблице
|
|||
|---|---|---|---|
|
#18+
mcrss, похоже на EAV . поищите по форуму . только хорошо подумайте, нужено ли это (EAV) в вашем случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2009, 11:42 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36007537&tid=1543226]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 458ms |

| 0 / 0 |
