Мы с моим другом строим сайт и имеем серьезные разногласия. Ядром сайта является база данных комментариев о "людях". В основном люди могут вводить комментарий, и они могут ввести человека, о котором идет речь. Затем зрители могут искать базу данных для слов, которые находятся в комментарии или в частях имени человека. Он полностью создан пользователем. Например, если кто-то хочет опубликовать комментарий о неверно названной версии имени человека, они могут, и это ОК. Таким образом, может быть несколько написаний разных людей, перечисленных как несколько разных записей (некоторые из них имеют среднее имя, некоторые с псевдонимом, некоторые неверные и т.д.), Но все в порядке. Нам все равно, будут ли люди комментировать случайные люди или воображаемые люди.
В любом случае проблема заключается в том, как мы структурируем базу данных. Сейчас это всего лишь одна таблица с идентификатором комментария в качестве первичного ключа, а затем есть поле для "человека" , о котором идет комментарий:
комментарий ID - комментарий - человек
1 - "он странный" - Джон Смит
2 - "вонючая девушка" - Дженни
3 - "гей" - Джон Смит
4 - "должен мне 20 долларов" - Jennyyyyyyyyy
Все работает нормально. Используя базу данных, я могу создавать страницы, в которых перечислены все "комментарии" для определенного "человека" . Однако он одержим тем, что база данных не нормализована. Я прочитал о нормализации и узнал, что он ошибался. Таблица IS в настоящее время нормализована, поскольку идентификатор комментария уникален и диктует "комментарий" и "человек" . Теперь он настаивает на том, что "человек" должен иметь это СОБСТВЕННЫЙ стол, потому что это "вещь". Я не думаю, что это необходимо, потому что, хотя "человек" действительно является более крупным контейнером (у одного "человека" может быть много "комментариев" о них), база данных, похоже, отлично работает с "человеком", являющимся атрибутом идентификатор комментария. Я использую различные вызовы PHP для разных вариантов SQL, чтобы сделать его магическим образом более сложным на выходе и другим способом, которым пользователь может искать и видеть результаты, но на самом деле настройка довольно проста. Теперь я разрешаю пользователям оценивать комментарии с большими пальцами вверх и большими пальцами вниз, и я сохраняю "оценку" как другое поле в одной таблице.
Я чувствую, что в настоящее время нет необходимости иметь отдельную таблицу только для уникальных записей "человек" , потому что "люди" не имеют собственного "счета" или каких-либо их собственных атрибутов. Делают только комментарии. Мой друг настолько настойчив, что это необходимо для эффективности. Наконец, я сказал: "Хорошо, если вы хотите, чтобы я создал отдельную таблицу и дал" человеку "это собственное поле, то каково было бы второе поле? Потому что, если в таблице есть только один столбец, это кажется бессмысленным. что позже мы можем создать потребность в том, чтобы дать" человеку "свою собственную таблицу, но тогда мы можем справиться с этим". Затем он сказал, что строки не могут быть первичными ключами и что мы будем преобразовывать "лиц" в текущей таблице в числа, а числа будут первичным ключом в новой таблице "человек" . Для меня это кажется ненужным, и это затруднит чтение текущей таблицы. Он также считает, что создать вторую таблицу позже невозможно, и что нам нужно предвидеть, что нам может понадобиться это для чего-то позже.
Кто прав?