mysql db design для приложения, настроенного администратором - PullRequest
0 голосов
/ 13 апреля 2011

Я планирую создать БД для веб-сайта. У нас есть разные экраны на нашем сайте. Каждый экран должен иметь уникальный идентификатор, и каждый экран будет иметь другой тип. Информация, связанная с экраном, должна храниться в его таблице типов. Как я могу это сделать?

Мой план - использовать таблицу экранов с полями ниже

Экраны
screen_id
screen_type
screen_type_table_name

Home_screen
home_screen_id
screen_id
язык
Content1
Content2
home_screen_field1
home_screen_field2

aboutus_screen
aboutus_screen_id screen_id
язык
Content1
Content2
about_us_field1
about_us_field2

Отношение двух вышеупомянутых таблиц составляет 1 ко многим (таблица экранов к таблице типов). На одном экране может быть много записей в таблице типов (на разных языках).

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

Кто-нибудь может предложить лучший дизайн БД?

[EDIT]
Я не могу сохранить информацию в той же таблице ..

Причины:
1) языковые ограничения
2) мне нужно вести ревизию каждого контента
3) Каждый экран разного типа. Таким образом, поля будут разными для каждого типа. Количество полей для каждого типа также различается.
4) Я тоже не могу сериализовать данные (так как мне нужно средство поиска)

Req
С Screen Id я должен быть в состоянии получить содержимое в одном запросе. Пожалуйста, дайте мне несколько предложений.
Заранее спасибо

Спасибо
Venu

Ответы [ 2 ]

0 голосов
/ 13 апреля 2011

Ваши таблицы Home_screen и Aboutus_screen одинаковы. Вы можете попробовать это так:

//screens\\
screen_id (PK)
language (PK)
type_id (FK)
content1
content2

//screen_types\\
screen_type_id (PK)
screen_type_name

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

0 голосов
/ 13 апреля 2011

Почему вы не держите все экраны в одной таблице? Вы должны сделать что-то вроде

Экраны Я бы, язык, Content1, Content2, и т.д.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...