Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






SQL-Server Foreign Key (внешние ключи)



Внешние ключи представляют собой разновидность ограничений для таблицы. Зачем вообще что-то ограничивать? Ответ на этот вопрос следует искать в таком понятии как нормализация базы данных. Чаще всего некоторый набор законченных данных размещают не в одной таблице, а в нескольких. Соответственно, эти таблицы должны быть каким-то образом взаимосвязаны между собой и, таким образом, мы получаем гарантии того, что значение(я) столбца одной таблицы имеется в другой(их) таблице(ах). В следствие этого, в столбцы зависимых таблиц мы не сможем поместить недопустимые значения.

Как это выглядит на практике.
Представьте, что мы создаем БД, в которой будем хранить информацию о книгах. По умолчанию, каждая книга представлена названием книги (Name) и именем автора (AuthorName). Для этого мы можем создать одну таблицу, в которой и создадим столбцы ID, Name, AuthorName:

Однако такой подход не совсем оптимален. В данной таблице могут быть записи с одинаковыми значениями полей AuthorName. Вполне возможна ситуация, когда в БД имеются записи о книгах, написанных одним автором. Так что теперь, более логично информацию об авторах вынести в отдельную таблицу. В итоге мы создаем две таблицы, Books и Authors:

Теперь возникает новая задача. В таблицу Books мы можем заносить книги, значение поля AuthorID которой равно значению поля ID в таблице Authors. Иначе, если не существует автора, то как может существовать книга им написанная?! Соответственно для каждой книги в таблице Books должен существовать автор в таблице Authors. При чем для многих книг может быть один автор.

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

Перед установкой внешних ключей следует для начала определить для зависимых таблиц уникальные индексы – первичный ключ. Установление уникального индекса для некоторого поля таблицы мы обеспечиваем уникальность значений записей в данном поле. Простым языком это можно понять на примере присвоения идентификационного кода каждому гражданину страны. Нет два одинаковых значения идентификационного кода. В той базе данных, в которой хранится информация обо всех гражданах, в поле IdentifCode установлен уникальный индекс, назначающий данному полю первичный ключ.

Назначим нашим таблицям первичные ключи. Для єтого в дизайнере каждой из таблиц выделите поле ID и правой кнопкой мыши вызовите контекстное меню, в котором выберите команду «Задать первичный ключ»:

В итоге слева возле соответствующих полей будет иметься желтый ключик, указывающий на установленный для данного поля первичного ключа:

После этого сохраните наши таблицы.

Теперь создадим сами связи между таблицами. Напомню, что главной таблицей является Authors, подчиненной – Books.

Поэтому переключитесь в дизайнере на таблицу Books. В пустом месте щелкните правой кнопкой мыши для вызова контекстного меню таблицы. Выберите команду «Отношения»:

В открывшемся окне нажмите кнопку «Добавить»:

Далее, раскройте элемент «Спецификация таблиц и столбцов». В открывшемся окне выберите в качестве таблицы первичного ключа таблицу Authors и её поле ID. Для таблицы внешнего ключа оставьте таблицу Books с выбранным полем AuthorID.

Нажмите кнопку «ОК» для завершения операции.

Таким образом мы получили зависимое поле Books.AuthorID от поля Authors.ID. Теперь, попытавшись вставить в поле Books.AuthorID значение, которого еще нет в Authors.ID, мы не сможем этого сделать. Как видите, установка внешних ключем позволяет контролировать согласованность даннях на уровне самой базы даннях.



Больше информации читайте по теме:



Оценить статью:

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

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        nbit    10.03.2011 22:54:09
        

а как программно теперь добавлять с помощью insert данные? и в какую из таблиц?

94.242.148.56


        Cаша Гудок    11.03.2011 0:21:44
        

Сначала добавляйте данные в таблицу авторов, а потом уже можно добавлять данные в таблицу книг, внося значение в поле AuthorID любое, которое присутствует в поле id таблицы авторов. Вот, что б нельзя было ссылаться на не существующие записи авторов и устанавливаем внешние ключи - они просто не позволят внести данные в таблицу книг, если такого автора нет еще в БД.

92.49.196.36


        nbit    11.03.2011 19:00:32
        

"внося значение в поле AuthorID любое, которое присутствует в поле id таблицы авторов" а если мне не любое значение нужно, а определенного автора, как узнать какой id соответствует какому автору? визуально определить это понятно - в бд можно посмотреть, а как программно? это вычислять надо специально как то? я просто хотел уменьшить размер БД за счет нормализации, но проблем стало больше. Извиняюсь за столько вопросов просто я уже замучался гуглить, везде описаны стандартная работа с бд, а нормализованной никак не могу найти.

94.242.184.107


        nbit    11.03.2011 23:41:58
        

как узнать какой id соответствует какому автору я так понял можно запросом за выборку, а как сохранить результат этой выборки в переменную?

94.242.184.107




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок