Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как назначить внешний ключ? / 2 сообщений из 2, страница 1 из 1
19.03.2021, 20:20
    #40055376
Как назначить внешний ключ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE TABLE visits(
    id INTEGER AUTO_INCREMENT PRIMARY KEY, 
    page_id INTEGER(30), 
    user_id INTEGER,
    s_date datetime,
    OS VARCHAR(30)


INSERT INTO orders(page_id, user_id, s_date, OS ) 
VALUES 
(5235235, 10091422, '2018-03-04 23:45:46.000', 'ubuntu'  ),
(236236, 236236, '2018-03-04 23:46:46.000', 'ubuntu'  ),
(34634634, 26236236, '2018-03-05 23:45:46.000', 'mac'  ),
(362615, 2365236, '2018-03-05 23:45:46.000', 'ubuntu'  ),
(16236236, 23523523, '2018-03-06 23:45:46.000', 'windows'  ),
(2362362, 23623623, '2018-03-07 23:45:46.000', 'ubuntu'  );
 
CREATE TABLE orders(
    id INTEGER AUTO_INCREMENT PRIMARY KEY, 
    transaction_id INTEGER(30), 
    user_id INTEGER,
    purchase_date  datetime,
    product_type VARCHAR(30),
    price INTEGER   ,
    );







Здравствуйте. Есть 2 таблицы: посетители и покупки. У обоих есть поле id но оно автоинкриминируется 1.
Я только разбираюсь в БД и у меня есть вопросы:
1) Как задать начальный индекс поля id не с 1, а скажем начиная с 101.
2)Правильно ли назначать первичный ключ на id которое стартует с 1 и автоинкриминируется, или лучше назначать его на другое поле, например user_id из первой таблицы.
3) Если уже первичный ключ и автоинкремент назначены, как их удалить? Через DROP primary key не работает.C такой пометкой (Error Code: 1075. Incorrect table definition; there can be only one auto column and it must be defined as a key
) Как это обойти?
4) ПО таблицам - как теперь уже в существующих таблицах назначить внешний ключ. я хотел бы связать поля uder_id из двух таблиц(правильно ли?) Как я вижу нужно убрать первичный ключ из первой таблицы с поля id и переназначить его на user_id и потом через ADD FOREIGN KEY(user_id) REFERENCES visits(user_id) cвязать их, но все равно, поле id в обоих таблицах служащие только для обозначения номера записи смущает. Точно не могу понять можем или нет его использоваться как первичный ключ, или возможно в таких таблицах лучше делать составной?
...
Рейтинг: 0 / 0
20.03.2021, 21:29
    #40055551
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как назначить внешний ключ?
Алекс_аморалес
1) Как задать начальный индекс поля id не с 1, а скажем начиная с 101.
Установкой соответствующей опции таблицы. Но после того, как сможешь себе доказать, что оно реально необходимо.

Алекс_аморалес
2)Правильно ли назначать первичный ключ на id которое стартует с 1 и автоинкриминируется, или лучше назначать его на другое поле, например user_id из первой таблицы.
Иногда правильно, иногда нет.

Алекс_аморалес
3) Если уже первичный ключ и автоинкремент назначены, как их удалить? Через DROP primary key не работает.C такой пометкой (Error Code: 1075. Incorrect table definition; there can be only one auto column and it must be defined as a key
) Как это обойти?
Составлением и выполнением корректного запроса.

Алекс_аморалес
4) ПО таблицам - как теперь уже в существующих таблицах назначить внешний ключ. я хотел бы связать поля uder_id из двух таблиц(правильно ли?)
Правильность определяется логикой системы, анализом, ER-диаграммой, а не высасывается из пальца.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как назначить внешний ключ? / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]