2012-07-23 3 views
0

У меня есть пять таблиц, как показано нижеПрограммирование Логика Сохранение нескольких идентификаторов таблицы в одной таблице

1.tblFruits 
2.tblGroceries 
3.tblVegetables 
4.tblPlants 
5.tblDescriptions 

Все таблицы, за исключением 5-го один tblDescriptions будут иметь идентификаторы, как один столбец и в качестве первичного ключа и предметы в качестве второй колонке.

В столбце в таблице 1 в таблицу 4, аналогичен, и следующий

ids  item_name 

Теперь я хочу, чтобы сохранить описание элементов из четыре таблицы в пятой таблице, как показано ниже

Desc_Id Description  Ids 

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

Позвольте мне знать, дизайн таблицы для вышеуказанного требования

+1

Если они так похожи, то почему они отделяют таблицы? –

+0

Я поставил вопрос в простой способ понять логику. Мое требование более сложное, чем this.I имеет более 25 столбцов в таблице с 1 по 4, которые я сказал выше – Athi

+0

Моим фактическим требованием я сохраняю содержимое страницы в разных таблицах и i нужно добавить ключевые слова seo для всех страниц, хранящихся в разных таблицах. Теперь, поскольку страницы идентифицируются с помощью pageIds, я хочу, чтобы какая-то структура таблицы, в которой хранятся эти ключевые слова SEO, содержится в одной таблице – Athi

ответ

0

Как ваши таблицы похожи, лучшая практика, чтобы объединить все ваши таблицы и даже описание и определить тип строки с использованием колонки типа.

id name description type 
          [Fruits, Groceries, Vegetables, Plants]  

Это легче понять и поддерживать.

Но если ваши таблицы различны у вас есть два параметра:

1- использование супер-таблица для типов, которые производят уникальные идентификаторы, которые я предлагаю.

2 используйте строку типа в поле описания и определите ее как первичный ключ рядом с идентификатором в этой таблице.

0
tblDescription 
===================== 
id | pk_id | description | type 

id : auto_generated id of tblDescription 
pk_id : foreign key to linked to the tblFruits,tblGroceries.. table 
description : the description 
type : value either be fruits, groceries,vegetables,plants .To identify the table. 

SQL для извлечения описание будет выглядеть следующим образом:

Select f.item_name, d.description from tblDescription d 
inner join tblFruits f on d.pk_id=f.id and d.type='fruits' 
inner join tblGroceries g on d.pk_id=g.id and d.type='groceries' 
0

Использование Polymorphic Association. В качестве внешнего ключа вашей пятой таблицы с описанием используйте два столбца object_id и object_model.

Пример содержимого таблицы:

Desc_Id Description Object_ID Object_Model 
1  'dsferer' 12  `Fruit` 
2  `desc2  12  `Vegetable` 
2  `descfdfd2 19  `Vegetable` 

Не забудьте добавить уникальный индекс на обоих столбцах по соображениям производительности.

Here you имеют какую-то статью, объясняющую это в PHP

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