Освобождение ресурсов

Функция mysql_free_result () освобождает всю память, связанную с конкретным запросом.

Синтаксис функции

int mysql_free_result (int result)

private ClassB w;}

класс ClassB объявлен внутри класса ClassA, причем со словом private, так что его экземпляры мы можем создавать только внутри класса ClassA.

Public class сlassА

{

private

Public class сlassB

{

Private Int z;

private ClassB w;

}

}

Пример двух классов, А и B. class А public, class B private. В классе В создать переменную-экземпляр private w класса А

Наследование

Чтобы построить (в терминах данных или поведения) класс на основе другого класса, применяется наследование. Оно принадлежит к правилам заменяемости, а именно к тому, которое гласит, что производный класс может быть заменен базовым. Примером этого может служить написание иерархии классов базы данных. Допустим, вам был нужен класс для обработки баз данных Microsoft SQL Server и Oracle. Поскольку эти базы различны, вам понадобится по классу для каждой из БД. Однако в обеих БД достаточная доля общей функциональности, которую можно поместить в базовый класс, а два других класса сделать его производными, при необходимости подменяя или изменяя поведение, унаследованное от базового класса.class Database

{ public Database()

{ }

class SQLServer: Database

{ }

class Oracle: Database

{ } }

АБСТРАКТНЫЕ КЛАССЫ

Методы класса могут быть объявлены как абстрактные. Это означает, что в этом классе нет реализации этих методов. Абстрактные методы пишутся с модификатором abstract. Класс, в котором есть хотя бы один абстрактный метод, называется абстрактным (в таком классе могу быть и обычные методы). Нельзя создавать экземпляры абстрактного класса — такой класс может использоваться только в качестве базового класса для других классов. Для потомка такого класса есть две возможности — или он реализует все абстрактные методы базового класса (и в этом случае для такого класса-потомка мы сможем создавать его экземпляры), или реализует не все абстрактные методы базового класса (в этом случае он является тоже абстрактным классом, и единственная возможность его использования — это производить от него классы потомки).

abstract class Figure
{

public abstract double square();
public abstract double perimeter();}

class Triangle: Figure
{
double а, Ь, с;
public override double perimeter()
{
return a=b+c;
}
}

9. Объектно-ориентированное программирование средствами С#.

C# входит в новую версию Visual Studio - Visual Studio.NET.. Одна из причин разработки нового языка компанией Microsoft - это создание компонентно-ориентированного языка для новой платформы.NET. Другие языки были созданы до появления платформы.NET, язык же C# создавался специально под эту платформу и не несет с собой груза совместимости с предыдущими версиями языков. Концепция объектно-ориентированного программирования подразумевает, что основой управления процессом реализации программы является передача сообщений объектам. Поэтому объекты должны определяться совместно с сообщениями, на которые они должны реагировать при выполнении программы. В этом состоит главное отличие ООП от процедурного программирования, где отдельно определённые структуры данных передаются в процедуры (функции) в качестве параметров. Таким образом, объектно-ориентированная программа состоит из объектов – отдельных фрагментов кода, обрабатывающего данные, которые взаимодействуют друг с другом через определённые интерфейсы.Объектно-ориентированный язык программирования должен обладать следующими свойствами:1) абстракции – формальное о качествах или свойствах предмета путем мысленного удаления некоторых частностей или материальных объектов;2) инкапсуляции – механизма, связывающего вмести код и данные, которыми он манипулирует, и защищающего их от внешних помех и некорректного использования;publicclassA { public int a; // открытый интерфейс public int b; // открытый интерфейс public int ReturnSomething(); // открытый интерфейс private int Aa = a; //безопасное использование открытого интерфейса private int Ab = b; //безопасное использование открытого интерфейса private void DoSomething(); // скрытый метод.}; 3) наследования – процесса, с помощью которого один объект приобретает свойства другого, т.е. поддерживается иерархической классификации;class A{ //базовый класс}; class B: public A{ //public наследование} class C: protected A{ //protected наследование} class Z: private A{ //private наследование} 4) полиморфизма – свойства, позволяющего использовать один и тот же интерфейс для общего класса действий. суть полиморфизма - мы используем один и тот же код для объектов разных классов.

public class Worker: Man

{

//Виртуальный метод

public virtual void GiveMoney(int money)

{

Console.WriteLine("Получите " + money + " рублей");

}

}

public class Teacher: Worker

{

//Задаем необходимую функциональность

public override void GiveMoney(int money)

{

int bonus = 1000; //премиальные 1000 руб

money = money + bonus;

base.GiveMoney(money);

}

}

10. Создание Windows-приложений средствами С##.

Яз C# предлагает объектно-ориентированный подход к Windows-программированию. Сущ два способа создания Windows-приложений, осн-х на применении окон:с помощью пакета Visual Studio, котй автоматиз-т большую часть процесса создания Windows-приложения;с помощью текстового редактора с последующей компиляцией исходного кода.Рассмотрим второй вариант, т.к. нам нужно рассмотреть язык C#.Ядром W-программ, написанных на С#, явл форма. Форма инкапсулирует осн функции, необх-е для создания окна, его отображения на экране и получения сообщений. Форма может представлять собой окно любого типа, включ осн окно приложения, дочернее или даже диалоговое окно. Первонач окно создается пустым. Затем в него добавляются меню и эл-ты упр-я, например экранные кнопки, списки и флажки. Т.о. форму можно представить в виде контейнера для других W-объектов. Когда окну посылается сообщение (н-р нажатие кнопки, выбор элемента меню), оно преобразуется в событие. Сл-но, чтобы обработать Windows-сообщение, достаточно для него зарегистр-ть обработчик событий. При получении этого сообщения обработчик событий будет вызываться автоматически. Форма создается посредством реализации объекта класса Form или класса, производного от Form. Класс Control опред черты, присущие всем W-эл-ам упр-я. Тот факт, что класс Form выведен из класса Control, позволяет использовать формы для создания элементов управления. Пример созданияокна. using System;using System.Windows.Forms;namespace WindowsAp1{ public class Form1: System.Windows.Forms.Form //Класс Form1-производный от класса Form// {public Form1(){//Присваиваем окну имя. Text = "Окно Windows";} [STAThread] static void Main()

{Form1 f=new Form1();//Создаем форму Application.Run(new Form1());//запускаем механизм функционирования окна.} }}

Создание кнопки.В W опред-ны различ типы управл-их эл-ов, включ экранные кнопки, флажки, переключатели и окна списков. Способы их создания примерно одинаковы, т.е. процедура добавления др типов упр-щих эл-ов будет такой же. Экранная кнопка инкапсулирована в классе Button, кот выведен из абстрактного класса ButtonBase. В классе Button определен только один конструктор public Button().Этот конструктор создает кнопку станд-го размера, располож-го внутри окна. Далее необходимо описать кнопку, присвоив свойству Text соотв-ие название. Для указания местоположения кнопки в окне необходимо присвоить св-ву Location координаты её верхнего левого угла. После создания кнопка помещается на форму с помощью метода Add(), кот вызывается для коллекции эл-ов упр-я, связанных с формой. Эта коллекция доступна посредством св-ва Сontrols, которое унаследовано от класса Control. Чтобы кнопка реагировала на щелчок, необх-о обеспечить обработку сообщения, кот генерирует эта кнопка, т.е. нужно добавить обработчик событий. Главное окно практически всех W-приложений вкл осн меню, расположенное вдоль верхней его границы. Оно обычно содержит категории верхнего уровня (Файл, Правка, Сервис), из кот можно получить раскрывающиеся меню, содержащие команды, связанные с соотв-щей категорией. Осн меню создается путем комбинации двух классов. Первый класс – MainMenu- инкапсулирует общую стр-ру меню; второй – MenuItem – отдельный его элемент.

Добавить перечень основных классов элементов, контролов

Пример (код) добавления контрола на форму

11. Виртуальные функции и полиморфизм. Реализация на С#. Примеры.

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

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

виртуальная функция — в ооп метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом, базовый класс определяет способ работы с объектами и любые его наследники могут предоставлять конкретную реализацию этого способаю1. пример-реализовать метод GiveMoney() (выдать заработную плату). метод GiveMoney() в каждом классе должен быть разный, но выполнять одну и ту же функцию, а именно, начислять заработную плату. Данная проблема решается как раз с помощью полиморфизма. необходимо сообщить, что во всех наследуемых от класса "Рабочий" классах должен поддерживаться метод GiveMoney(). Во-вторых, мы должны в каждом наследуемом классе реализовать метод GiveMoney(). Необходимо воспользоваться двумя словами: virtual и override:

public class Worker: Man

{ //Виртуальный метод

public virtual void GiveMoney(int money)

{ Console.WriteLine("Получите " + money + " рублей"); }}

public class Teacher: Worker

{ //Задаем необходимую функциональность

public override void GiveMoney(int money)

{ int bonus = 1000; //премиальные 1000 руб

money = money + bonus;

12. Элементы контроля в C#. Примеры.

Элементы контроля позволяют пользователям взаимодействовать с системой, посредствам ввода, чтения информации, а также управления ею с помощью управляющих элементов, например Кнопка.Контейнером для эл-в является окно,класс Form основа для всех всех оконных пирложений,кот.автоматически генер.при создании в VS Windows application проекта.Окно само по себе это бесполезный класс и никакой пользы не несет. В меню инстр. toolbox в разделе Common Controls основные элементы контроля:Label Button TextBox CheckBox RadioButton ListBox ComboBox TabControl – панель выбора

Button / свойства-1. Text - Текст на кнопке.2.FlatStyle - определяет стиль кнопки.3.Enabled - В true кнопка доступна для нажатия.4.Visible - в false кнопка не отображается на форме, хотя она есть.5.TabInsex - определяет последовательность перехода на контрол по Tab-у.6.Dock - определяет заполнение одного из краев (или всех сразу) которое будет заполнять контрол, того контейнера в котором находится.7.Anchor - Опред какого края контейнера будет придерживаться контрол при растягивании формы.Эти свойства есть практически у всех контролов в.NET, определяют они одно и тоже.У кнопки есть целая куча событий, которые вы можете использовать, самое часто исп Click.Что бы быстро обработать обработчик данного события необходимо дважды кликнуть по кнопке в окне дизайнера.Откроется метод в котором можно обраб.событие.Для обраб события необходимо в инициализации нашей кнопки определить делигат и указать ему метод который будет вызываться при возникновении данного события: this.button1.Click += new System.EventHandler(this.button1_Click);VS автом вставляет данную строку в файл дизайнер Form1.Disigner.cs.

TextBox /Свойства:1. Text - строка введенного текста.2.CharacterCasing - возможность вводить только большие буквы или строчные.3.MultiLine - ввод нескольких строк,4.PasswordChar - маскирует ввод текста под введенный символ (напр звездочку).5.ReadOnly - в true текстовое поле недоступно для редактиования.Событий так же целая масса:По умолч в студио выделен TextChanged.

CheckBox. необходим для ответа ДА/НЕТ/неопред.Свойства:Text-Надпись рядом с галочкой.CheckState-Состояние контрола(Отм/неотмечен/неопр).ThreeState - Указывает позволять или нет выбирать третье состояние (Неопределенное)Checked - Возвращает true если контрол отмечен, false если не отмечен.Основным событием является CheckedChanged - когда изменено состояние контрола. private void checkBox1_CheckedChanged(object sender, EventArgs e)

{ MessageBox.Show(checkBox1.Checked.ToString()); }

RadioButton. Радио кнопки позволяют сделать выбор между несколькими предложенными вариантами. Чтобы компилятор знал какие варианты ответа относятся к одному вопросу, радио кнопки объединяют в группу. Свойства:
1. Text - Вариант ответа 2. Checked - Возвращает true если контрол отмечен, false если не отмечен.Если у вас на форме две группы ответов, то необходимо разносить их по разным контейнерам GroupBox.Основным событием является сheckedChanged - Отрабатывает когда изменено состояние контрола.

ComboBox /Выпадающий список как с фиксированным набором выпадающих элементов

так и как хранилище выборки из бд.Свойства:1Text - первоначальная надпись.Sorted - Сортирует список.Items - Собственно сама коллекция.DropDownStyle - выбор стиля контрола. Узнать выбранный элемент можно используя свойства SelectedItem, SelectedText, SelectedIndex

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{ MessageBox.Show(comboBox1.SelectedItem.ToString()); }

Добавить приемр создания. 2 типа в дизайнере и в коде, пример кода. Установка свойства элемента контрола через код

Пример:

public class Form1: System.Windows.Forms.Form

{private System.Windows.Forms.Button button1;

private void button1_Click(object sender, System.EventArgs e)

{

button1.Visible=false;

} }

base.GiveMoney(money); }}

пример вызова полиморфных классов. Определение вызываемой функции по типу переменной

полиморфизм на интерфейсах

Класс Teacher (Учитель) наследуется от класса Worker (Рабочий). В базовом классе Worker мы создали метод GiveMoney(), и определили его работоспособность по умолчанию. ключевое слово virtual означает, что он может быть переопределен в наследуемом классе, а может быть и не переопределен. В классе Teacher мы переопределяем метод GiveMoney() с помощью ключевого слова override. Здесь мы немного изменили логику. Учитель кроме зарплаты будет получать еще и премию. мы используем метод GiveMoney() базового класса с помощью указателя base. В принципе это делать не обязательно, но это избавит вас от лишнего копирования кода.Заключается он в том, что у нескольких не связанных между собой классов могут быть методы со схожим назначением и с одинаковыми именами. Т.е. вы можете смело вызывать этот метод не задумываясь о классе, а система уже сама решит какую именно реализацию надо вызывать.

15. Технология OLE-DB и ADO для работы с базами данных.

OLE DB (Microsoft) - механизм работы с самыми разнообразными источниками данных (в отличии от ODBC - где только работа с реалиционными БД) на базе COM-интерфейса. OLE DB определяет набор COM-интерфейсов (Component Object Model), включающих различные сервисы однотипного доступа к различным данным (в том числе и к нереляционным БД, например, к папкам систем электронной почты или просто файлам), обеспечивая при этом поддержку работы с наборами данных и иерархическими наборами записей, подключенными непостоянно к сети. Для доступа к БД требуется установка OLE DB провайдера для СУБД (DLL СУБД загружается при выполнении приложения в его адресное пространство). Кроме того, фирмой разработан специальный провайдер (Microsoft OLE DB Provider for ODBC Drivers), который может работать не через API клиентской части СУБД, а через интерфейс ODBC API.

ADO (Microsoft) - своеобразная надстройка над OLE DB (использует библиотеки OLE DB) - дополнительный набор библиотек, содержащих COM-объекты, реализующие интерфейс доступа к данным. Этот набор библиотек первоначально включал две объектные технологии Microsoft: Data Access Objects (DAO) и Remote Data Objects (RDO) - два различных механизма доступа к локальным и удаленным базам данных соответственно.
Как ответ на потребность создания единой технологии, обеспечения единого подхода при работе с БД и единого интерфейса для доступа к локальным и удаленными данным, появилась технология ADO. ADO является более дружественной оболочкой базовой технологии OLE DB и позволяет работать с любыми базами данных.

17. Правила целостности реляционной модели баз данных. Основные операции реляционной алгебры.

Существует несколько вариантов выбора операций, которые включаются в реляционную алгебру. Исходно Кодд предложил восемь операторов, но впоследствии к ним были добавлены и некоторые другие. Пять основных операций реляционной алгебры, а именно выборка (selection), проекция (projection), декартово произведение (cartesian product), объединение (union) и разность (set difference), выполняют большинство операций извлечения данных, которые могут представлять для нас интерес. На основании пяти основных операций можно также вывести дополнительные операции, такие как операции соединения (join), пересечения (intersection) и деления (division). Функции этих операций схематически показаны на рис. 3.2.

Реляционная целостность

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

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

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

Определитель NULL

Определитель NULL: Указывает, что значение атрибута в настоящий момент неизвест но или неприемлемо для этого кортежа.

Определитель NULL следует воспринимать как логическую величину "неизвестно". Другими словами, либо это значение не входит в область определения некоторого кортежа, либо никакое значение еще не задано. Ключевое слово NULL представляет собой способ обработки неполных или необычных данных. Однако определитель NULL не следует понимать как нулевое численное значение или заполненную пробелами текстовую строку. Нули и пробелы представляют собой некоторые значения, тогда как ключевое слово NULL призвано обозначать отсутствие какого-либо значения. Следовательно, определитель NULL следует рассматривать иначе, не так, как другие значения. Некоторые авторы используют термин "значение NULL", но на самом деле определитель NULL не является значением, а лишь обозначает его отсутствие, а потому термин "значение NULL" использовать не рекомендуется.

Например, в представленном в табл. 3.8 отношении Viewing атрибут Comment может не иметь определенного значения до тех пор, пока потенциальный арендатор не посетит данный объект недвижимости и не сообщит свое мнение агентству. В противном случае для представления этого состояния без использования ключевого слова NULL

18. Нормализация таблиц.1-я, 2-я, 3-я нормальные формы.

В таблице Должности присутствует полная функциональная зависимость между атрибутами ID(Name). Данная таблица является нормализованной по НФ1.

В паре таблиц Сотрудник-Должность есть связь 1-ко-многим. Данная связь реализует ссылочную целостность между внешним ключом Сотрудник.ID_Должность и первичным ключом Должность.ID. Данные две таблицы являются нормализованными по НФ2.

Данные 3 таблицы являются нормализованными по НФ3, т.к. между парами таблиц существуют связи по внешним ключам, обеспечивающие ссылочную целостность. Атрибут Должность.ID является транзитивно зависимым от атрибута Расписание.ID_сотрудник через связи в двух различных парах таблиц Должность.ID -> Сотрудник.ID_Должность и Сотрудник.ID -> Расписание.ID_Сотрудника.

Нормализация - метод создания набора отношений с заданными свойствами на основе требований к данным, установленным в некоторой организации. Процесс нормализации был впервые предложен Э. Ф. Коддом (Codd, 1972, б). Нормализация часто выполняется в виде последовательности тестов для некоторого отношения с целью проверки его соответствия (или несоответствия) требованиям заданной нормальной формы. Процесс нормализации является формальным методом, который позволяет идентифицировать отношения на основе их первичных ключей (или потенциальных ключей, как в случае НФБК) и функциональных зависимостей, существующих между их атрибутов. Проектировщики баз данных могут использовать нормализацию в виде наборов тестов, применяемых к отдельным отношениям с целью нормализации реляционной схемы до заданной конкретной формы, что позволит предотвратить возможное возникновение аномалий обновления.

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

Для преобразования ненормализованной таблицы в первую нормальную форму (1НФ) в исходной таблице следует найти и устранить все повторяющиеся группы данных. Повторяющейся группой называется группа, состоящая из одного и более атрибутов таблицы, в которой возможно наличие нескольких значений для единственного значения ключевого атрибута таблицы. Обратите внимание на то, что в данном контексте термин "ключ" равным образом относится и к одному атрибуту, и к группе атрибутов, которые единственным образом идентифицируют каждую строку ненормализованной таблицы. Существует два подхода исключения повторяющихся групп из ненормализованных таблиц.

Вторая нормальная форма (2НФ). Вторая нормальная форма (2НФ) основана на понятии полной функциональной зависимости. Полная функциональная зависимость – в некотором отношении атрибут В называется полностью функционально зависимым от атрибута А, если атрибут В функционально зависит от полного значения атрибута А и не зависит ни от какого подмножества полного значения атрибута А. Функциональная зависимость А—> В является полной функциональной зависимостью, если удаление какого-либо атрибута из А приводит к утрате этой зависимости. Частичной функциональной зависимостью называется такая зависимость А->В, если в А есть некий атрибут, при удалении которого эта зависимость сохраняется. Вторая нормальная форма применяется к отношениям с составными ключами, т.е. к таким отношениям, первичный ключ которых состоит из двух или больше атрибутов. Дело в том, что отношение с первичным ключом на основе единственного атрибута всегда находится, по крайней мере, в 2НФ. Отношение, которое не находится в 2НФ, может страдать от аномалий обновления. Например, предположим, что необходимо изменить арендную плату для объекта недвижимости с номером 'PG4’ Для этого потребуется обновить две строки отношения Customer_Rental. Если значение арендной платы будет обновлено только в одной строке, то в результате база данных будет приведена в противоречивое состояние. Вторая нормальная форма (2НФ) – отношение, которое находится в первой нормальной форме и каждый атрибут которого, не входящий в состав первичного ключа, характеризуется полной функциональной зависимостью от этого первичного ключа. Третья нормальная форма (3НФ). Транзитивная зависимость - если для атрибутов А, В и С некоторого отношения существуют зависимости вида А—>В и В->С, то говорят, что атрибут С транзитивно зависит от атрибута А через атрибут В (при условии, что атрибут А функционально не зависит ни от атрибута В, ни от атрибута С). Транзитивная зависимость является описанием такого типа функциональной зависимости, которая возникает при наличии следующих функциональных зависимостей между атрибутами А, В и С: А->В и B->C.

Третья нормальная форма (ЗНФ). Если в отношении существует транзитивная зависимость между атрибутами, в таком случае транзйтивно-зависимые атрибуты удаляются из него и помещаются в новое отношение вместе с копией их детерминанта.

19. Общая концепция языка SQL. Особенности построения SQL-запросов

SQL структуризованный язык запросов, ориентирован на операции с данными, представленными в виде логически взаимосвязанных совокупностей таблиц. Особенность предложений этого языка состоит в том, что они ориентированы в большей степени на конечный результат обработки данных, чем на процедуру этой обработки. SQL сам определяет, где находятся данные, какие индексы и даже наиболее эффективные последовательности операций следует использовать для их получения: не надо указывать эти детали в запросе к базе данных.

SQL поддерживает: предложения определения данных (определение баз данных, а также определение и уничтожение таблиц и индексов); запросы на выбор данных (предложение SELECT); предложения модификации данных (добавление, удаление и изменение данных); и другие). Кроме того, он предоставляет возможность выполнять в этих предложениях: арифметические вычисления (включая разно-образные функциональные преобразования), обработку текстовых строк и выполнение операций сравнения значений арифметических выражений и текстов; упорядочение строк и (или) столбцов при выводе содержимого таблиц на печать или экран дисплея; запоминание выводимого по запросу содержимого таблицы, нескольких таблиц или представления в другой таблице (реляционная операция присваивания). группирование данных и применение к этим группам таких операций, как среднее, сумма, максимум, минимум, число элементов и т.п.

Команды SQL:

1. Создать табл.

CREATE TABLE table name (

`a` TINYINT UNSIGNED,

`b` TINYINT UNSIGNED,

`c` TINYINT UNSIGNED)

2. SELECT <список полей> FROM <список названий таблиц> [WHERE <список условий>] [ORDER BY <список полей>];

SELECT a,c FROM table name;

3. INSERT INTO users (login, password) VALUES ('hawker', 'qwerty');

4. UPDATE users SET password='asdfg' WHERE login='hawker';

5. DELETE FROM users WHERE login='hawker';

6. DROP TABLE users – удаление таблицы;

потребуется либо ввести какие-то ложные данные, либо создать дополнительные атрибуты, которые могут быть бессмысленными для пользователей. В данном примере можно попробовать представить отсутствующий комментарий с помощью значения -1. Кроме того, можно добавить в отношение Viewing еще один атрибут — "Имеется ли комментарий?" — со значением Y (Yes), если комментарий есть, и N (No) — в противном случае. Однако оба этих подхода могут запутать пользователя.

Применение определителя NULL может вызвать проблемы на этапе реализации. Трудности возникают из-за того, что реляционная модель основана на исчислении предикатов первого порядка, которое обладает двузначной, или булевой, логикой, т.е. допустимыми являются только два значения: истина и ложь. Применение определителя NULL означает, что придется вести работу с логикой более высокого порядка, например трехзначной или даже четырехзначной (Codd, 1986, 1987, 1990).

Использование понятия NULL в реляционной модели является спорным вопросом. Кодд (1990) рассматривает понятие NULL как составную часть этой модели, а другие специалисты считают этот подход неправильным, полагая что проблема отсутствующей информации еще не до конца понята, удовлетворительное ее решение не найдено, а потому включение определителя NULL в реляционную модель является преждевременным (Date, 1995). Следует отметить, что не во всех реляционных системах поддерживается работа с определителем NULL.

Теперь можно приступать к изучению реляционных ограничений целостности.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: