Вы зависаете на One Tool, чтобы выполнить задачу.Без понимания того, что:
- , как утверждает Дарин, в конце дня SQL является символьным языком
- любой и всех команд (манипулирование данными или определение данных, как вв данном случае), выполняются на сервере SQL в виде символьных строк
- . Существует более ста инструментов администрирования SQL Server с графическим интерфейсом, от мусора, который MS выпускает раз в два года, до зрелых продуктов, которые продолжают расти (незаменен или переписан)
- вы можете щелкнуть или перетащить или что-нибудь еще в любом графическом интерфейсе, который вы используете, но когда вы нажимаете кнопку «сохранить» или «применить», все делают одно и то же: отправляют строку символов SQLSQL-сервер для обработки
Следовательно, да, вам нужно понимать, что происходит на уровне команд SQL, если вы собираетесь либо регистрировать сервер, либо моделировать / реализовывать базы данных.В противном случае вы будете делать непреднамеренные вещи, когда будете нажимать или перетаскивать.
SQL существует уже более 30 лет, и он прошел долгий путь (он все еще очень ограничен, но этоздесь не актуально).В старые времена у нас был только синтаксис
{DROP|CREATE} [UNIQUE] [CLUSTERED] INDEX name ON table (columns, ...)
.По мере расширения было добавлено больше реляционных конструкций, и у нас есть синтаксис
ALTER TABLE table {ADD|DROP} {UNIQUE|PRIMARY KEY} CONSTRAINT name (columns,...)
.
Дейв Пинал верен на одном уровне: с точки зрения структур хранения данных внутри сервера, обаСинтаксисы INDEX
и CONSTRAINT
приводят к одному и тому же результату, индексу.
Но он просто отвечает на вопрос и, очевидно, не слышал о характеристиках SQL стандарта ISO / IEC / ANSI, которые подразумеваются вболее новый синтаксис CONSTRAINT
, который не подразумевается в синтаксисе INDEX
(если вы его используете, вы должны явно указать эти параметры).Что еще более важно, есть много параметров, которые могут быть предоставлены в синтаксисе INDEX
, которые отсутствуют в синтаксисе CONSTRAINT
.Таким образом, существуют значительные различия, которые могут не относиться к небольшим серверам, работающим в состоянии по умолчанию.
Обычно люди, склонные к производительности на физическом уровне или имеющие сотни таблиц для администрирования, используют синтаксис INDEX
;и люди, которые дистанцируются от физического нас CONSTRAINT
.
- Смысл в том, что используйте один XOR другой, не используйте комбинацию: это приводит к созданию дублирующих индексов, о которых вы даже не знаете (потому что они не отображаются в сломанном графическом интерфейсе MSпанель, на которую вы смотрите).
.
Дейв путает вещи: не существует такого понятия, как «индекс первичного ключа».Это или ограничение основного ключа или индекс (который может быть основным ключом и имеет настройку, относящуюся к поддержке PK) ..
Следующее, что смущает любого, новичка или кого-то еще, это то, что вы привыкли видеть все виды забавных рисунков, которые должны изображать модели данных или данных, а они нет.MS - худший нарушитель, в каждом отдельном продукте есть совершенно другая забавная схема и набор символов.Там нет общности или стандарта;Есть символы, которые изображают важный аспект дизайна, на одном изображении, которое вы можете захотеть на другом изображении, и вы не можете его получить.
Ну, на самом деле существует стандарт моделирования реляционных баз данных, называемый IDEF1X.Но MS не слышал об этом.Идея заключается в стандартной всего важной информации, касающейся модели;тонкости;и т. д., определены в единой модели.Много разных команд могут использовать одну модель.И, конечно, у него есть стандартный набор символов и обозначений.
Суть в том, что вы должны изучить стандарты, и это поможет вам избежать путаницы.Затем, независимо от того, какой инструмент GUI у вас есть на вашем экране сегодня, вы будете знать, что вы явно хотите / имеете в своей модели данных, и что происходит внутри сервера.
Дело в том, что «как я делаю это графически», вы делаете это в любом инструменте построения диаграмм, потому что вы являетесь владельцем модели, и вы выбираете настройки в таблицах. Никакой MS GUI никогда не давал и не даст вам этого.
,
Графический интерфейс не заменяет знания.
Не могли бы вы объяснить: если, как вы говорите, (ItemName, ItemSize)
образует уникальный ключ для этой конкретной таблицы, на каком основании, по вашему мнению, вам нужно вместо (ItemName, ItemSize
плюс что-нибудь еще )
? Как вы можете получить больше уникального, чем уникального?