Войти

Показать полную графическую версию : Несколько вопросов об ...


Sharkky
06-10-2003, 10:53
1. Если в mySQL уже создана таблица как я могу назначить одно из её полей ключевым?
2. Будет ли mySQL отслеживать при этом уникальность ключа?
3. Можно ли создавать связи между полями таблиц, и может ли, при этом, mySQL обеспечивать целостность данных? (На подобие того как это происходит в Access)

Megabyte
07-10-2003, 08:08
1.
ALTER TABLE `table_name` ADD PRIMARY KEY ( `field_name` )

2. Будет.
3. Не в курсе, Oracle точно будет, а с MySQL я так не делал.

Sean Ingumsky
08-10-2003, 01:37
Megabyte:up::up:
Sharkky
3. Можно ли создавать связи между полями таблиц, и может ли, при этом, mySQL обеспечивать целостность данных? (На подобие того как это происходит в Access)
Что имеется в виду? Разъясните, пожалуйста.

Megabyte
08-10-2003, 08:19
Пример для Оракла:
Например, есть таблица клиентов

customers (
 customer_id Number,
 customer_name Varchar2(500),
 ...
)

и таблица заказов

orders (
 order_id Number,
 order_customer_id Number,
 constraint orders_fk FOREIGN KEY (order_customer_id) References customers(customer_id),
...
)

Директива constraint указывает Ораклу, что поле order_customer_id в таблице orders - ссылка на customer_id в таблице customers. Тогда Оракл сам будет следить, чтобы у всех записей в таблице orders значение в поле order_customer_id совпадало с одним из значений из customer_id.  То есть при любом изменении order_customer_id Оракл проверит, есть ли такое значение в customer_id, если нет - не даст изменить (или вставить). Также он не даст удалить сроки их таблицы customers, если его customer_id есть в одном из order_customer_id.

Sean Ingumsky
08-10-2003, 13:01
Megabyte
Да, подобное есть и в MySQL...
Sharkky
Есть один хорошоий способ всё узнать - посмотреть документацию ;-)) Там можно гораздо быстрее найти полные ответы на все интересующие вопросы. Документация в Сети есть, например, здесь: www.mysql.com/documentation.




© OSzone.net 2001-2012