разделение данных на несколько таблиц - PullRequest
2 голосов
/ 26 августа 2009

Я создаю страницу сотрудников.

Часть информации заносится в таблицу «служащих», а часть - в таблицу «доступности», которая ссылается на таблицу «служащих»:

наличие: id / employeeid (уникальный идентификатор из таблицы сотрудников) / понедельник доступен / и включен и включен /

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

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

Или это беспорядок, и я должен иметь страницу создания сотрудника и ТОГДА страницу установленной доступности?

Так, в общем, я хочу знать, является ли кодирование чище и «лучше» для разделения двух функций?

Ответы [ 5 ]

3 голосов
/ 26 августа 2009

Добавление к ответу @ Quassnoi:

Вы бы добавили запись сотрудника, а затем воспользовались функцией MySQL LAST_INSERT_ID(), чтобы найти автоинкрементный уникальный идентификатор добавленной записи employee. Затем вы можете передать это значение обратно в оператор availability INSERT.

Более подробную информацию можно найти на странице справки MySQL по адресу http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html

.

Важно, чтобы вы не использовали оператор SELECT (например, SELECT MAX(employee.id)), поскольку могут быть и другие способы добавления записей. LAST_INSERT_ID() зависит от вашего подключения

1 голос
/ 26 августа 2009

Использование «последней созданной строки» может не всегда работать так, как вы ожидаете, и может усложнить ситуацию в будущем, если будет рост или если другой программист примет проект. Если я понимаю, что вы ищете, у вас должно быть 3 таблицы. Одна таблица для сотрудников, одна таблица доступности и третья таблица должны использоваться для хранения уникальных записей для ассоциации. В таблице сопоставлений в каждой строке будут столбцы: уникальный идентификатор, идентификатор сотрудника, идентификатор доступности.

1 голос
/ 26 августа 2009

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

Да, это звучит нормально. Если вы используете столбец автоинкремента для employeeid, вы можете использовать mysql_insert_id () или эквивалентный ему для безопасного извлечения последнего вставленного идентификатора. Не делайте SELECT MAX(employeeid) FROM ...., потому что у вас могут возникнуть проблемы, когда множество людей используют его одновременно.

1 голос
/ 26 августа 2009

Вы можете легко получить последнюю запись inred через

mysql_insert_id()

После этого вы можете вставить запись о доступности для нужного сотрудника. Примечание. Я бы выбрал среду, которая решает эти проблемы, например Symfony или Cake.

1 голос
/ 26 августа 2009

Конечно, сначала создайте employee, затем availability.

Если ваши таблицы InnoDB, вы можете сделать это в транзакции, чтобы можно было откатить все обновление, если что-то пойдет не так.

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