Дизайн базы данных: выбор и ограничение избранного - PullRequest
3 голосов
/ 13 января 2011

Прямо сейчас в базе данных у меня есть таблица Members и таблица Products с объединяющейся таблицей Favorites , которая состоит из первичных внешних ключей от обоих Члены и Продукты таблицы.У меня есть требование наложить ограничение на количество товаров, которые участник может разместить в своих избранных на 5.

Откуда может появиться это ограничение?Это что-то сделано в базе данных (MySQL) и, следовательно, будет частью моей существующей схемы?Или это функция программирования, которая может быть реализована с помощью чего-то вроде PHP?

Ответы [ 2 ]

3 голосов
/ 25 января 2011

Ответ на вопрос, однако, так как вы ищете понимания ...

Идея с базами данных заключается в том, что все такие ограничения и ограничения на данные помещаются в саму базу данных (как самостоятельнаясодержится блок).Ограничения данных должны быть в базе данных, а не только в приложении.SQL ISO / IEC / ANSI предоставляет несколько типов ограничений для различных целей:

  • Ограничения FOREIGN KEY, для ссылочной целостности (а также производительности; соответствия Open Architecture и т. Д.)

  • ПРОВЕРЬТЕ Ограничения, чтобы проверить значения данных других столбцов и запретить нарушения

  • Ограничения ПРАВИЛА, чтобы запретить данные, которые находятся вне допустимого диапазона илиукажите точные форматы значений данных

Ваше классическое простое ПРАВИЛО или ПРОВЕРКА.И правильный ответ для базы данных и дизайна базы данных - это ПРАВИЛО или ПРОВЕРКА, а не код.

Это не означает, что приложение не должно проверять счет и избегать попыток выполнить недопустимое действие.Это просто здравый смысл.И это не повторение, это остановка недопустимых действий на более высоком уровне, что экономит использование ресурсов.И на данные в БД нельзя полагаться, если целостность управляется извне, в коде приложения, написанном разработчиками.На правила, реализованные внутри сервера, можно положиться, они применяются ко всем приложениям или компонентам приложения.

Но бесплатные не-SQL не имеют основ Standard-SQL.Нет проверок или правил.Поэтому целостность данных в «базе данных» зависит исключительно от разработчика: их качество, знания, согласованность и т. Д.

И правильный ответ для MyNonSQL / PHP - это код.В каждом месте, которое пытается вставить.

1 голос
/ 13 января 2011

Вы бы сделали это на PHP.

Просто сделайте SELECT COUNT(*) FROM members_products WHERE member_id = 3 перед вставкой.

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