2015-05-03 2 views
1

Я делаю datatables, где храню рекламные объявления.Отношение Mysql в базе данных

Моя реклама таблица выглядит следующим образом:

Advertisement: 
id (PK) 
title 
description 
category_id (FK) 
.. 

У меня есть 2 различных типов рекламы: хранить автомобили и хранить недвижимость. Поэтому у меня есть атрибуты, которые различаются для обоих типов. то есть автомобили имеют марку и количество дверей, тогда как недвижимость имеет количество комнат.

Поэтому я хотел бы спросить, что является лучшим способом сохранить это отношение.

Должен ли я помещать все значения в одну большую таблицу рекламы, но есть disatvantage, что некоторые значения всегда ноль.

Или мне нужно сделать еще 2 таблицы и сохранить общие значения в таблице рекламы?

CarTable 
id(PK) 
advertisement_id (FK) 
brand 
numberOfDoors 
... 

RealEstateTable 
id(PK) 
advertisement_id (FK) 
nrOfRooms 
... 

Я не думаю, что второе решение с двумя дополнительными столами очень хорошее. Любые предложения? Спасибо

ответ

0

Одним из способов может быть:

Advertisement: 
id (PK) 
title 
description 
category_id (FK) 
.. 

Attribute type: 
id (PK) 
name 
code (can be optional) 

Advertisement's attributes: 
id (PK) 
Advertisement id (FK) 
Attribute id (FK) 
Attribute value 
0

Я думаю, что второй из них является правильным. Конечно, это зависит от того, насколько велика база данных и сколько это нулевые столбцы. Я думаю так, потому что:

  1. Там не будет какими-либо пустыми ячейки для разности типов

  2. Обычно для многих таблиц столбцов, которые мы используем «SELECT * ...» ОГОВОРКИ но это не является хорошим, и в вашем случае все эти поля NULL будут загружать трафик.

  3. На всех платформах базы данных оптимизированы для установления связей между таблицами - в случае, если у вас жесткое заданное отношение по ключу, это не проблема.

+0

Так что в этом случае у меня есть отношение к одному между рекламой - CarTable и рекламой - RealEstateTable? С помощью этого решения я должен сделать еще один атрибут в таблице рекламы, чтобы сохранить тип рекламы, если это автомобиль или недвижимость? Что делать, если я делаю поиск по всем входам в другую таблицу? – Steve

Смежные вопросы