2012-01-23 5 views
1

У меня есть 2 таблицы для приложения контактов книгиMySql Какой метод быстрее

первый один (так называемые члены) включает в себя полное имя и уникальный идентификатор второй (называемые телефоны) включает в себя ID (телефон ID) и MemberID (кому принадлежит этот телефон) и номер телефона.

Чтобы отобразить номера телефонов участников.

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

или

не хранить идентификаторы в таблице членов. и просто сделайте запрос, где memberID = XX

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

+1

Второй вариант кажется более логичным. Легче запрашивать и обновлять. – magicalex

ответ

2

Ваш второй вариант намного проще для программирования и устранения неполадок. Используй это.

Ваш первый вариант называется денормализацией на жаргоне СУБД. Иногда имеет смысл денормализовать базу данных с очень большими таблицами, чтобы ускорить ее. Но mySQL - хорошая реляционная база данных и хорошо работает с нормализованными таблицами, как вы описываете.

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

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