2012-04-05 4 views
1

Я хочу разработать базу данных для хранения кроссвордов, в основном у меня есть 2 таблицы: Вопросов таблица, Сетка таблица,Базы данных для кроссворда

Вопросов Таблица (q_id, вопрос, ответ ...) сетки Таблица (g_id, имя, ....)

, когда я приезжаю связать вопросы таблицы с Сетки таблицы, я имею в виду хороший способ,

Questions_Grid (q_id, g_id), пара будет первичный ключ,

другое решение, которое предложил мой босс: Таблица таблиц (g_id, q_ids, ....) q_ids хранит все идентификаторы вопроса, используемые в этой сетке

какой из них лучше? и если у вас есть лучшие варианты?

ответ

2

Похоже, что предложение вашего босса состоит в том, чтобы сохранить список идентификаторов вопросов в виде текстового столбца в таблице сетки. Если я понимаю, о чем вы спрашиваете, и это действительно так, первый из них, конечно, намного лучше, потому что он нормализуется. В вашей схеме вы можете сделать много полезных запросов, которые были бы грязными или невозможными (и медленными, если это возможно) в схеме вашего босса.

1

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

1

таблица ссылок с одной кортежей более нормализована.

Question_grid 
------------- 
q_id 
g_id 

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

1

Хорошо, что правило заключается в создании связующего стола, когда у вас есть «одна» (сетка) на «многие» (вопросы) отношения. Таким образом, ваш вариант будет лучшим ответом, его нормализация!

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