Реферат Курсовая Конспект
Реферат - раздел Образование, Реферат ...
|
Нормализация отношений.
Для ликвидации противоречий в отношениях необходимо провести их нормализацию.
НФ.
Все отношения уже находятся в 1НФ, так как значения всех их атрибутов атомарны, т.е. каждый его кортеж содержит только одно значение для каждого из атрибутов.
НФ.
Отношения “Пользователи”, “Дебиторы”и“Оплаты”имеют единственные и простые потенциальные ключи, поэтому уже находятся в 2НФ.
Рассмотрим отношение “Кредиты”. Обозначим его R1.Оно имеет множество атрибутов A = { ID, Дебитор, Баланс, Дата, Сумма} и неприводимое множество функциональных зависимостей
S = {
{id}->{Сумма},
{id}->{Дата},
{Дебитор}->{Баланс}
}.
Потенциальным ключом в этом отношении является множество K = {ID, Дебитор}.
Это отношение не находится в 2НФ, так как атрибуты “ID” и “Дебитор” приводимо зависят от потенциального ключа (т.е. зависят от части ключа).
Проведём нормализацию этого отношения до 2НФ.
Для этого выполним декомпозицию этого отношения и разобьём его на две проекции. В первую проекцию включим все атрибуты, входящие в потенциальный ключ, а также неключевые атрибуты, которые неприводимо зависят от потенциального ключа. Во вторую проекцию включим все неключевые атрибуты, которые приводимо зависят от потенциального ключа, вместе с теми атрибутами, принадлежащими потенциальному ключу, от которых эти неключевые атрибуты зависят приводимо.
R1’ = {
ID,
Дебитор,
Баланс
}
Потенциальным ключом отношении R1’ является множество атрибутов {ID, cinema}.
R1’’ = {
ID,
Сумма,
Дата
}
Потенциальным ключом отношении R1’’ является множество атрибутов {ID}.
Таким образом, исходное отношение “Кредиты” было разбито на отношения R1’ и R1’’, которые находятся в 2НФ, причём нетрудно убедиться, что естественное объединение R1’ и R1’’ даст отношение “Кредиты”.
3НФ
Отношения “Пользователи”, “Дебиторы”, а также отношения R1’ и R1’’, на которые было разбито отношение “Кредиты”, находятся в 2НФ, так как не имеют неключевых атрибутов, которые транзитивно зависят от первичного ключа.
Рассмотрим отношение “Оплаты”. Обозначим его R2. Оно имеет множество атрибутов
A = {ID, Кредитный счет, Сумма, Дата} и неприводимое множество функциональных зависимостей
S = {
{ID} -> { Кредитный счет },
{ID} -> { Дата },
{ Дата } -> { Сумма }
}.
Потенциальным ключом в этом отношении является множество атрибутов K = {ID}.
Это отношение не находится в 3НФ, так как по правилу транзитивности
{ID} -> { Кредитный счет , Дата } ʌ { Дата } -> {Сумма} =>
=> {ID} -> { Сумма },
т.е. атрибуты “ Сумма ” транзитивно зависит от потенциального ключа.
Проведём нормализацию этого отношения до 3НФ.
Для этого выполним декомпозицию этого отношения и разобьём его на две проекции. В первую проекцию включим все атрибуты, входящие в потенциальный ключ. Во вторую проекцию включим неключевые атрибуты, которые нетранзитивно зависят от ключа и через которые осуществляется транзитивная зависимость, в качестве нового потенциального ключа, а также транзитивно зависящий от ключа отношения R2 атрибут.
R2’ = { ID,
Дата,
Кредитный счет
}
Потенциальным ключом отношении R2’ является множество атрибутов {ID}.
R2’’ = {
Дата,
Сумма
}
Потенциальным ключом отношении R2’’ является множество атрибутов {Дата}.
Таким образом, исходное отношение “Оплаты” было разбито на отношения R2’ и R2’’, которые находятся в 3НФ, причём нетрудно убедиться, что естественное объединение R2’ и R2’’ даст отношение “Оплаты”.
В результате, все отношения являются нормализованными до 3НФ. Для тех отношений, которые были разбиты на несколько проекций, зададим новые имена:
R1’ − “Баланс дебитора” ,
R1’’ − “Сумма кредита”,
R2’ − “Дата кредитной операции”,
R2’’ − “Сумма оплаты в данном месяце”
5.Физическая (внутренняя) модель
Структура приложения с комментариями
Для выполнения поставленной задачи было решено использовать объектно-ориентированный язык программирования C Sharp (C#), так как он полностью подходит для выполнения задачи, а также предназначен для разработки приложений, выполняемых в среде .NET Framework.
Также было решено использовать возможности файл-серверной СУБД Microsoft SQLSERVER, так как наше приложение будет работать с небольшими объёмами данных и будет небольшое число пользователей, одновременно работающих с данными.
Для создания приложения используем пространство имен System.Windows.Forms, содержащее: классы форм, а также всех других визуальных компонентов: кнопок, переключателей, полей ввода и т.д. Помимо самих классов в данном пространстве имен также существует огромное количество других типов: интерфейсов, структур, делегатов и т.д. [6]
Описание использованных в программе процедур, объектов, форм и классов:
В моей программе создано 7 форм:
“MainForm” (основная форма нашей программы),
“NewDebitor” (форма для дабавление новый дебиторы),
“NewCredit” (форма для добавление кредита для дибитора),
“NewPayment” (форма добавления нового оплата),
“ UpdateDebitor ” ((форма обновления данных об Дебитора),
“NewUser” (форма регистрации),
“login” (форма входа в программу).
Пространство имен System.Data.SqlClient является поставщиком данных платформы .NET Framework для SQL Server.
Поставщик данных .NET Framework для SQL Server представляет собой набор классов, используемых для доступа к базам данных SQL Server в управляемом пространстве. Класс SqlDataAdapter позволяет заполнить резидентно находящийся в памяти набор DataSet, который можно использовать для запроса и обновления базы данных.
Также реализована процедура поиска по таблице DataGridView.
В Базе Данных пароли хранятся в виде MD5. Для этого использую процедуру GetHashString(string s).в которую передаю пароль в незашифрованном виде.
Приложение B. SQL-запросы создания пустой базы данных
CREATE TABLE Credits(
ID uniqueidentifier NOT NULL,
DebitorID uniqueidentifier NOT NULL,
Amount money NOT NULL,
Balance money NOT NULL,
OpenDate datetime NOT NULL,
CONSTRAINT PK_Credits PRIMARY KEY CLUSTERED
(ID ASC) ON [PRIMARY]
)
GO
CREATE TABLE Debitors
(
ID uniqueidentifier NOT NULL,
Name nvarchar(100) NOT NULL,
PostNumber bigint NOT NULL,
PhoneNumber int NULL,
CONSTRAINT PK_Debitors PRIMARY KEY CLUSTERED
(ID ASC)ON [PRIMARY]
);
GO
CREATE TABLE Payments(
ID uniqueidentifier NOT NULL,
CreditsID uniqueidentifier NOT NULL,
Amount money NOT NULL,
[PaymentDate] [datetime] NOT NULL,
CONSTRAINT PK_Payments PRIMARY KEY CLUSTERED
(ID ASC)
ON [PRIMARY]
)
GO
CREATE TABLE [Users](
ID uniqueidentifier NOT NULL,
Name nvarchar(50) NOT NULL,
UserName nvarchar(20) NOT NULL,
Password uniqueidentifier NOT NULL,
IsAdmin bit NOT NULL,
)
– Конец работы –
Используемые теги: Реферат0.039
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Реферат
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов