Многоколонный первичный ключ в MySQL 5

Используйте относительный путь к корню вашего сайта, например:

Если clock.js включен http://domain.com/javascript/clock.js

Включить:

<script language="JavaScript" src="/javascript/clock.js"></script>

Если он находится в корневом каталоге вашего домена:

<script language="JavaScript" src="/clock.js"></script>
21
задан dotancohen 25 September 2018 в 11:24
поделиться

2 ответа

Цитата из страницы CREATE TABLE Syntax :

ПЕРВИЧНЫЙ КЛЮЧ может быть индексом с несколькими столбцами. Однако вы не можете создать индекс с несколькими столбцами , используя ключевой атрибут PRIMARY KEY в спецификации столбца . Это помечает только этот единственный столбец как основной. Вы должны использовать отдельное предложение PRIMARY KEY (index_col_name, ...).

Для первичных ключей с несколькими столбцами можно использовать что-то подобное:

CREATE TABLE
    product (
        category INT NOT NULL,
        id INT NOT NULL,
        price DECIMAL,
        PRIMARY KEY(category, id)
    );

Из 13.6.4.4. Ограничения FOREIGN KEY

48
ответ дан 29 November 2019 в 06:27
поделиться

Первичный ключ - это концепция предметной области, которая однозначно (обязательно и в достаточной степени) идентифицирует вашу сущность среди аналогичных сущностей. Составной (состоящий из нескольких столбцов) первичный ключ имеет смысл только тогда, когда часть ключа относится к конкретному экземпляру другого объекта домена.

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

Теперь вы хотите объединить вашу библиотеку с библиотекой вашего соседа, но по-прежнему иметь возможность различать, кому принадлежит книга. Домен стал шире, а первичный ключ теперь (owner, book_id).

Таким образом, создание каждого составного первичного ключа не должно быть вашей стратегией, скорее вы должны использовать его при необходимости.

Теперь несколько фактов о MySQL. Если вы определяете составной первичный ключ и хотите, чтобы RDBSM автоматически увеличивал идентификаторы для вас, вы должны знать о разнице между поведением MyISAM и InnoDB.

Допустим, нам нужна таблица с двумя полями: parent_id, child_id. И мы хотим, чтобы child_id автоматически увеличивался.

MyISAM будет однозначно автоинкрементировать в записях с одним и тем же parent_id, а InnoDB будет автоинкрементировать однозначно во всей таблице.

В MyISAM вы должны определить первичный ключ как (parent_id, child_id), а в InnoDB как (child_id, parent_id), потому что автоматически увеличиваемое поле должно быть самой левой составляющей первичного ключа в InnoDB.

19
ответ дан 29 November 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: