Форум: "Потрепаться";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];
ВнизПомогите составить структуру БД. Найти похожие ветки
← →
КаПиБаРа © (2004-10-06 13:53) [0]Несколько раз сталкивался с такой ситуацией. Настало время узнать истину :)
Имеются объекты А и Б. У объекта А свойства к, л, м. У объекта Б свойства к, л, м, н, о.
Требуется фиксировать события т происходящие с объктами А и Б.
Вроде можно построить такие таблицы:
1 таблица "Объекты" с полями:
ID, к, л, м, type_A_or_B
2 таблица "Дополнительные свойства" с полями:
ID, ID_1табл, н, о.
3 таблица "События" с полями:
ID, ID_1табл, т
Но есть проблемка. Для того что бы человек смог идентифицировать объект он должен увидеть свойство м для объекта А или свойства м + н для объекта Б.
Как организовать таблицы в такой базе?
=====================================
Если вы однажды помогли другу в беде,
он обязательно о вас вспомнит,
когда снова попадет в беду.
=====================================
← →
TUser © (2004-10-06 14:00) [1]Я предлагаю из первой таблицы убрать type, сделать отдельную табл для А и ссылку там на поля в первой таблице, то же самое - для Б. И потом на запрос выдавать нужные человеку поля.
1 таблица "Объекты" с полями:
ID1, к, л, м
2 таблица "Объекты А"
ID2, ID1
3 таблица "Объекты Б" с полями:
ID3, ID1, н, о.
4 таблица "События" с полями:
ID4, ID2, ID3, т
← →
TUser © (2004-10-06 14:01) [2]Я предлагаю из первой таблицы убрать type, сделать отдельную табл для А и ссылку там на поля в первой таблице, то же самое - для Б. И потом на запрос выдавать нужные человеку поля.
1 таблица "Объекты" с полями:
ID1, к, л, м
2 таблица "Объекты А"
ID2, ID1
3 таблица "Объекты Б" с полями:
ID3, ID1, н, о.
4 таблица "События" с полями:
ID4, ID2, ID3, т
← →
Sergey13 © (2004-10-06 14:06) [3]2КаПиБаРа © (06.10.04 13:53)
А в чем "нужность" 2 таблицы? Почему не все в одной?
← →
КаПиБаРа © (2004-10-06 14:09) [4]TUser © (06.10.04 14:00) [1]
Забыл сказать. Нужно получить такое представление со следующими полями:
к, л, м, т.
С вашей структурой сложный запрос будет.
Есть идея в первую таблицу ввести поле д, которое для объекта А будет равно м, а для объекта Б будет равно м + н.
И получать представление:
к, л, д, т.
Как такой вариант с точки зрения профессионалmys[ разработчиков БД.
← →
1008 © (2004-10-06 14:11) [5]КаПиБаРа © (06.10.04 14:09) [4]
Create View ...
← →
КаПиБаРа © (2004-10-06 14:15) [6]Sergey13 © (06.10.04 14:06) [3]
А в чем "нужность" 2 таблицы? Почему не все в одной?
Ну вроде как бы проведя нормализацию получаем 2 таблицы.
← →
КаПиБаРа © (2004-10-06 14:20) [7]Или другой вариант.
Для А и Б создать отдельные таблицы. А представление к, л, м, т получать с помощью union?
← →
Sergey13 © (2004-10-06 14:24) [8]2[6] КаПиБаРа © (06.10.04 14:15)
>Ну вроде как бы проведя нормализацию получаем 2 таблицы.
Нормализация - это не закон. Это метод. И можно им пользоваться, можно нет, можно пользоваться частично. ИМХО, в данном случае 1 таблица будет эффективнее.
← →
Vitaly © (2004-10-06 16:30) [9]уж нормализовать так нормализовать до конца:
3 таблица "События" с полями:
ID, т
← →
Vitaly © (2004-10-06 16:36) [10]select f1, f2, 0, 0
from t1, t3
where t1.id = t3.id
union
select f1, f2, f3, f4
from t1, t3, t2
where t1.id = t3.id and t1.id = t2.id1
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.033 c