Связь и сцепление

Я предполагаю, что полученная вами ошибка:

Ошибка конверсии при преобразовании даты и / или времени из символьной строки.

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

Итак, причина, по которой вы получаете эту ошибку, из-за того, что DATEFORMAT не находится в ожидаемом формате.

Стандартная форма представления ANSI DATE находится в формате YYYY-MM-DD. Формат, который вы предоставили, находится в DD-MM-YYYY, но по умолчанию для вашего сеанса похоже, что он ожидает MM-DD-YYYY, что приводит к тому, что следующие даты интерпретируются в INSERT:

Order_ID    Order_Date
--------------------------
1           Feb 02 2015
2           May 08 2015
3           Jan 08 2015
4           (30th month?) 07 2015
            ^- This is the part that's erring.

Поскольку ваше намерение выглядит как DD-MM-YYYY, вы можете использовать два способа:

  1. Изменение форматов DATE в стандарте ANSI:

Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (1, 'Design User Interface',9345678210123, 1, '2015-08-02'); 
Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (2, 'Fire',9654693261489, 1, '2015-08-05'); 
Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (3, 'The Odyssey',9654864332511, 2, '2015-08-01'); 
Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (4, 'Anatomy',9654877777755, 2, '2015-07-30'); 
Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (5, 'Surgery',9654864951753, 2, '2015-07-01'); 
  1. Измените DATEFORMAT для транзакции:

Set DateFormat dmy

Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (1, 'Design User Interface',9345678210123, 1, '02-08-2015'); 
Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (2, 'Fire',9654693261489, 1, '05-08-2015'); 
Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (3, 'The Odyssey',9654864332511, 2, '01-08-2015'); 
Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (4, 'Anatomy',9654877777755, 2, '30-07-2015'); 
Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (5, 'Surgery',9654864951753, 2, '01-07-2015'); 

Я лично рекомендовал бы первый вариант, так как это лучшая привычка вступать в привязку дат.

66
задан Darren Burgess 14 December 2011 в 11:13
поделиться

6 ответов

Связь

  • Свободный: Вы и парень в мини-маркете. Вы связываетесь через четко определенный протокол для достижения соответствующих целей - Вы платите деньги, он позволяет Вам выйти с мешком Cheetos. Любой из Вас может быть заменен, не разрушая систему.

  • Трудный: Вы и Ваша жена.

Сцепление

  • Низко: мини-маркет. Вы идете туда для всего от газа до молока к банковскому делу ATM. Товары и услуги имеют мало общего, и удобства наличия их всех в одном месте не может быть достаточно для возмещения получающегося увеличения стоимости и уменьшения по качеству.

  • Высоко: хранилище сыра. Они продают сыр. Ничто иное. Не может разбить их когда дело доходит до сыра все же.

202
ответ дан Shog9 24 November 2019 в 14:45
поделиться

Связываясь - мера того, насколько модуль (пакет, класс, метод) полагается на другие модули. Желательно уменьшить связь или уменьшить сумму, что данный модуль полагается на другие модули системы.

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

65
ответ дан Thomas Owens 24 November 2019 в 14:45
поделиться

Одним из лучших всесторонних обсуждений понятий разработки программного обеспечения, связанных с OO (включая эти), является Bertrand Meyer Разработка объектно-ориентированного программного обеспечения .

Относительно 'связи', он дает свою Слабую Связь / Маленькое правило Интерфейсов следующим образом:

, Если два модуля связываются, они должны обмениваться как можно меньшей информацией.

материал Meyer, связанный со сцеплением, никогда не сводится к единственному содержательному оператору, но я думаю это предложение от Steve McConnell , Код, Завершенный , подводит итог его вполне прилично:

Сцепление относится к тому, как тесно все стандартные программы в классе или весь код в стандартной программе поддерживают центральную цель

23
ответ дан McKenzieG1 24 November 2019 в 14:45
поделиться

Быстрый-и-грязный способ измерить связь состоит в том, чтобы измерить Ваш import (или подобный) операторы.

3
ответ дан Hank Gay 24 November 2019 в 14:45
поделиться

"Связь является мерой взаимозависимостей между модулями, которые должны быть минимизированы" "сцепление, качество, которое будет максимизироваться, внимание на отношения между операциями, выполненными каждым модулем".

заключенный в кавычки из данной статьи: http://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf

2
ответ дан Eduardo Diaz 24 November 2019 в 14:45
поделиться

Связь означает зависимость от других.
Сплоченность означает целостность с самим собой.

22
ответ дан 24 November 2019 в 14:45
поделиться