|
|
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Помогите разработать БД. Имеем VIN (Идентификационный номер транспортного средства) и (вариант, версию или номер одобрения типа) нужно по нему узнать характеристики авто, производителя, марку. Примерная схема прикреплена. Что-то можно упростить или нужно добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 12:25 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
еще вопросик Идентификационный номер транспортного средства (англ. Vehicle identification number, VIN) — уникальный код транспортного средства, состоящий из 17 символов. В VIN разрешено использовать только следующие символы латинского алфавита и арабские цифры: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H J K L M N P R S T U V W X Y Z Использовать буквы I, O, Q запрещено, так как они сходны по начертанию с цифрами 1, 0, а также между собой. VIN состоит из 3 частей: WMI (World Manufacturers Identification) — всемирный индекс изготовителя (1-3 символы) VDS (Vehicle Description Section) — описательная часть (4-9 символы) VIS (Vehicle Identification Section) — отличительная часть (10-17 символы) Так вот в VIN коде есть символы которые несут информацию, а есть которые не несут (их обозначают "?") например: WAU???4F????????? WAU - "Audi AG", Felix Wankel Strasse, Neckarsulm, 74148, Germany тип - 4F или WBAW??1?????????? WBA - "Bayerische Motoren Werke AG", Muenchen 13, Germany тип - X3 Позиции которые несут информацию у каждого ТС (транспортного средства) отличаются как мне WAU???4F????????? сравнить с реальным VIN транспортного средства WAUZZZ4FXB002525? вернее как организовать запись, поле, таблицу для "WAU???4F?????????" для дальнейшего сравнения? Заранее благодарю за Ваше уделенное внимание и советы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 10:30 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Не делайте ВИН ключом !!! Вин на момент заведения карточки может быть неразборчиво написан, неизвестен или вообще не существовать (например нужно ввести в картотеку прицеп или некое прочее колесное средство без вин). Имейте ввиду, что ТЗ на разработку никогда не бывает окончательным. Избегайте узкоспециализированных реализаций в стандартных задачах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 10:48 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiПозиции которые несут информацию у каждого ТС (транспортного средства) отличаются как мне WAU???4F????????? сравнить с реальным VIN транспортного средства WAUZZZ4FXB002525? вернее как организовать запись, поле, таблицу для "WAU???4F?????????" для дальнейшего сравнения? Сравнить - с помощью like, конечно. Заменяете символ "знак вопроса" на wildcard "любой одиночный символ" и сравниваете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 10:59 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
LSV, Возможно Вы правы, но без VIN: Вам не выдадут сертификат, не поставят на учет, не пройдете тех. осмотр Это как ИНН у человека (есть исключения, люди отказываются), но без ИНН Вам никто ничего не захочет делать (официально) Таблица КТС - это и есть карточка на определенное транспортное средство ("определенное" - известен VIN) Остальные таблицы - "словари" Но над неким логическим ключом вместо VIN подумаю. Меня больше беспокоит, если оператор не будет знать тип, вариант, версию, номер одобрения типа, как с этим бороться? это ведь ключи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 11:05 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
LSVНе делайте ВИН ключом !!! Пусть делает. Лучше один раз на собственной заднице почувствовать все прелести работы с естественными ключами, нежели всю жизнь страдать "я делаю как все, не пользуясь такой красивой идеей". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 11:07 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Спасибо Значит, просто делаю доп. таблицу VIN C(16) ТИП С(40) Код производителя N(5)WBAW??1?????????? X3 10WAU???4F????????? 4F 5 а потом реальный VIN сравниваю через LIKE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 11:32 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
softwarerLSVНе делайте ВИН ключом !!! Пусть делает. Лучше один раз на собственной заднице почувствовать все прелести работы с естественными ключами, нежели всю жизнь страдать "я делаю как все, не пользуясь такой красивой идеей". То есть, лучше совсем избегать естественные ключи? Раньше так и делал (ключи были набор символов), но недавно наткнулся на 2 базы по своей теме и в обеих используются естественные ключи (номер одобрения, вариант, версия) Поэтому решил попробовать. Вроде как проще будет делать запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 11:44 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiТо есть, лучше совсем избегать естественные ключи? Зависит от цели. Если хочется делать хорошие, надёжные и удобные в сопровождении программы, естественных ключей следует избегать. Если же хочется блестяще побеждать созданные своими руками трудности и чувствовать себя самым умным и просто красавчиком, естественные ключи просто необходимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 12:45 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitiki.... Поэтому решил попробовать. Вроде как проще будет делать запрос.Все сложности вам уже перечислили. Естественные ключи очень желательно не делать. но без VIN: Вам не выдадут сертификат, не поставят на учет, не пройдете тех. осмотр зы: разве я писал, что нужно не использовать ВИН ???? Вы абсолютно уверены, что ВИН всегда (вообще всегда) будет записан с первой попытки правильно ? Вы абсолютно уверены, что ВИН всегда (вообще всегда) будет существовать(быть известным) в момент ввода позиции ? Вы абсолютно уверены, что ТЗ окончательное и завтра вас не попросят вести учет комплектующих или каких-то агрегатов и т.п. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 14:48 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiТо есть, лучше совсем избегать естественные ключи? Раньше так и делал (ключи были набор символов), но недавно наткнулся на 2 базы по своей теме и в обеих используются естественные ключи (номер одобрения, вариант, версия) Самый оптимальный вариант - искусственные ключи из целого числа (int, bigint). Символы в ключах лучше не использовать. Естественные ключи - ВСЕГДА риск. Если очень хочется - можно создать уникальный индекс по полю с данными естественного ключа. Но естественных ключей лучше избегать. Поля с ключами вообще желательно по минимуму показывать пользователям, ОСОБЕННО нежелательно, чтобы пользователи что то вводили в поля ключей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 21:59 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovrikitikiТо есть, лучше совсем избегать естественные ключи? Раньше так и делал (ключи были набор символов), но недавно наткнулся на 2 базы по своей теме и в обеих используются естественные ключи (номер одобрения, вариант, версия) Самый оптимальный вариант - искусственные ключи из целого числа (int, bigint). Символы в ключах лучше не использовать. Естественные ключи - ВСЕГДА риск. Если очень хочется - можно создать уникальный индекс по полю с данными естественного ключа. Но естественных ключей лучше избегать. Поля с ключами вообще желательно по минимуму показывать пользователям, ОСОБЕННО нежелательно, чтобы пользователи что то вводили в поля ключей. Int не всегда хорошо, пример Treeview - ключи начинаются с символа. Насчет остального согласен. Сделаю искусственные ключи и выложу новую схему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2017, 14:11 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Rikitikis_ustinov Самый оптимальный вариант - искусственные ключи из целого числа (int, bigint). Символы в ключах лучше не использовать. Int не всегда хорошо, пример Treeview - ключи начинаются с символа. А в чем минус int в качестве искусственного ключа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2017, 15:26 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitiki... То есть, лучше совсем избегать естественные ключи? ... Несколько аргументов почему да. Например: Вы заносите VIN WAUZZZ4FXB002525? в базу, а программа ругается, что такой уже есть. Одна из причин: предыдущий оператор внес неверные данные. Интересно, как объясните клиенту невозможность внесения информации в систему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2017, 18:36 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinov... А в чем минус int в качестве искусственного ключа? Лично я вижу только один минус: возможная недостаточная разрядность. Тогда остается bigint :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2017, 18:41 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiПомогите разработать БД. Имеем VIN (Идентификационный номер транспортного средства) и (вариант, версию или номер одобрения типа) нужно по нему узнать характеристики авто, производителя, марку. Примерная схема прикреплена. Что-то можно упростить или нужно добавить? мягко говоря, с первичным ключами у тебя сильно все не так, как надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 07:10 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
LSVНе делайте ВИН ключом !!! Вин на момент заведения карточки может быть неразборчиво написан, неизвестен или вообще не существовать (например нужно ввести в картотеку прицеп или некое прочее колесное средство без вин). Имейте ввиду, что ТЗ на разработку никогда не бывает окончательным. Избегайте узкоспециализированных реализаций в стандартных задачах. в разных задачах по-разному, где-то да, где-то нет. надо сначала выяснить, что он там делает, поеду чем такое советовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 07:16 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiеще вопросик Идентификационный номер транспортного средства (англ. Vehicle identification number, VIN) — уникальный код транспортного средства, состоящий из 17 символов. В VIN разрешено использовать только следующие символы латинского алфавита и арабские цифры: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H J K L M N P R S T U V W X Y Z Использовать буквы I, O, Q запрещено, так как они сходны по начертанию с цифрами 1, 0, а также между собой. VIN состоит из 3 частей: WMI (World Manufacturers Identification) — всемирный индекс изготовителя (1-3 символы) VDS (Vehicle Description Section) — описательная часть (4-9 символы) VIS (Vehicle Identification Section) — отличительная часть (10-17 символы) Так вот в VIN коде есть символы которые несут информацию, а есть которые не несут (их обозначают "?") например: WAU???4F????????? WAU - "Audi AG", Felix Wankel Strasse, Neckarsulm, 74148, Germany тип - 4F или WBAW??1?????????? WBA - "Bayerische Motoren Werke AG", Muenchen 13, Germany тип - X3 Позиции которые несут информацию у каждого ТС (транспортного средства) отличаются как мне WAU???4F????????? сравнить с реальным VIN транспортного средства WAUZZZ4FXB002525? вернее как организовать запись, поле, таблицу для "WAU???4F?????????" для дальнейшего сравнения? Заранее благодарю за Ваше уделенное внимание и советы это не VIN уже, это маска VIN. тебе надо тогда уже хранить составные части VIN отдельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 07:18 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiLSV, Возможно Вы правы, но без VIN: Вам не выдадут сертификат, не поставят на учет, не пройдете тех. осмотр Это как ИНН у человека (есть исключения, люди отказываются), но без ИНН Вам никто ничего не захочет делать (официально) Таблица КТС - это и есть карточка на определенное транспортное средство ("определенное" - известен VIN) Остальные таблицы - "словари" Но над неким логическим ключом вместо VIN подумаю. Меня больше беспокоит, если оператор не будет знать тип, вариант, версию, номер одобрения типа, как с этим бороться? это ведь ключи. есть еще другая проблема, полно машин вообще без VIN. это конечно если ты хочешь вести учет машин, а не VIN ов. кроме того, другие транспортные средства , мотоциклы, квадроциклы, например, вообще не имеют vin. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 07:22 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikisoftwarerпропущено... Пусть делает. Лучше один раз на собственной заднице почувствовать все прелести работы с естественными ключами, нежели всю жизнь страдать "я делаю как все, не пользуясь такой красивой идеей". То есть, лучше совсем избегать естественные ключи? Раньше . не лучше, а нужно каждый раз думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 07:24 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovrikitikiТо есть, лучше совсем избегать естественные ключи? Раньше так и делал (ключи были набор символов), но недавно наткнулся на 2 базы по своей теме и в обеих используются естественные ключи (номер одобрения, вариант, версия) Самый оптимальный вариант - искусственные ключи из целого числа (int, bigint). Символы в ключах лучше не использовать. Естественные ключи - ВСЕГДА риск. Если очень хочется - можно создать уникальный индекс по полю с данными естественного ключа. Но естественных ключей лучше избегать. Поля с ключами вообще желательно по минимуму показывать пользователям, ОСОБЕННО нежелательно, чтобы пользователи что то вводили в поля ключей. как бы если пошла такая пьянка, то VIN - не совсем уж естественный ключ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 07:27 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
MasterZivкроме того, другие транспортные средства , мотоциклы, квадроциклы, например, вообще не имеют vin. Это Вы "батентка" загнули Все КТС, что ездят по дорогам общего назначения и имеют регистрацию, имеют VIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 19:55 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
MasterZivrikitikiПомогите разработать БД. Имеем VIN (Идентификационный номер транспортного средства) и (вариант, версию или номер одобрения типа) нужно по нему узнать характеристики авто, производителя, марку. Примерная схема прикреплена. Что-то можно упростить или нужно добавить? мягко говоря, с первичным ключами у тебя сильно все не так, как надо в понедельник доберусь до компа, переделаю, на искусственные ключи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 19:57 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
MasterZivLSVНе делайте ВИН ключом !!! Вин на момент заведения карточки может быть неразборчиво написан, неизвестен или вообще не существовать (например нужно ввести в картотеку прицеп или некое прочее колесное средство без вин). Имейте ввиду, что ТЗ на разработку никогда не бывает окончательным. Избегайте узкоспециализированных реализаций в стандартных задачах. в разных задачах по-разному, где-то да, где-то нет. надо сначала выяснить, что он там делает, поеду чем такое советовать. Сертификация КТС (колесные транспортные средства) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 20:01 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
MasterZivrikitikiеще вопросик Идентификационный номер транспортного средства (англ. Vehicle identification number, VIN) — уникальный код транспортного средства, состоящий из 17 символов. В VIN разрешено использовать только следующие символы латинского алфавита и арабские цифры: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H J K L M N P R S T U V W X Y Z Использовать буквы I, O, Q запрещено, так как они сходны по начертанию с цифрами 1, 0, а также между собой. VIN состоит из 3 частей: WMI (World Manufacturers Identification) — всемирный индекс изготовителя (1-3 символы) VDS (Vehicle Description Section) — описательная часть (4-9 символы) VIS (Vehicle Identification Section) — отличительная часть (10-17 символы) Так вот в VIN коде есть символы которые несут информацию, а есть которые не несут (их обозначают "?") например: WAU???4F????????? WAU - "Audi AG", Felix Wankel Strasse, Neckarsulm, 74148, Germany тип - 4F или WBAW??1?????????? WBA - "Bayerische Motoren Werke AG", Muenchen 13, Germany тип - X3 Позиции которые несут информацию у каждого ТС (транспортного средства) отличаются как мне WAU???4F????????? сравнить с реальным VIN транспортного средства WAUZZZ4FXB002525? вернее как организовать запись, поле, таблицу для "WAU???4F?????????" для дальнейшего сравнения? Заранее благодарю за Ваше уделенное внимание и советы это не VIN уже, это маска VIN. тебе надо тогда уже хранить составные части VIN отдельно. как это сделать? если эти части у каждого производителя разные? каждый символ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 20:05 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Pulsar_ps_ustinov... А в чем минус int в качестве искусственного ключа? Лично я вижу только один минус: возможная недостаточная разрядность. Тогда остается bigint :) Я писал выше есть объекты, которые не воспринимают цифровые ключи, вот и весь минус ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 20:10 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Pulsar_ps_ustinov... А в чем минус int в качестве искусственного ключа? Лично я вижу только один минус: возможная недостаточная разрядность. Тогда остается bigint :) Я писал выше есть объекты, которые не воспринимают цифровые ключи, вот и весь минус ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 20:10 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Rikitikiесть объекты, которые не воспринимают цифровые ключи "Покажите мне этого негодяя!" (с) сквайр Трелони. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 20:11 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
softwarer, Treeview ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 20:20 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Rikitikisoftwarer, Treeviewэто какое то неправильное тривью. Можно пруф? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 20:31 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Rikitikisoftwarer, Treeview Treeview вообще никаких ключей не воспринимает. Он их генерит и возвращает как ответ на TVM_INSERTITEM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 20:35 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
softwarerRikitikisoftwarer, Treeview Treeview вообще никаких ключей не воспринимает. Он их генерит и возвращает как ответ на TVM_INSERTITEM. Каждому узлу в описанном выше коде присвоим свои уникальные ключи, то есть заполним 3-й параметр метода Add(). При этом необходимо учесть, что в качестве ключа может быть использовано только символьное выражение, причем оно не должно начинаться с цифры. Если вы попытаетесь ввести в качестве ключа численное выражение, или сивольное выражение, начинающееся с цифры, вы получите сообщение об ошибке "OLE IDispatch exception code 0 from Node. Invalid key". Теперь код из метода Init() может выглядеть, например, так: this.Nodes.Add(,,"n1","First node") this.Nodes.Add(,,"n2","Second node") this.Nodes.Add(,,"n3","Third node") this.Nodes.Add(,,"n4","Fourth node") this.Nodes.Add(,,"n5","Fifth node") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 20:53 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
softwarer, пишу на VFP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 21:16 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
softwarer, Это не суть? ну не будут у меня ключи Int? будут символьные, привык ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 21:27 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Rikitikiпишу на VFP Да наздоровье. Просто, формулируя свои утверждения, стоит понимать, что изредка встречаются люди, использующие что-то другое :) Rikitikiну не будут у меня ключи Int? будут символьные, привык Я не очень понимаю, кто мешает впендюрить в это фокспрошное тривью ключи вида 'N' + id, но в любом случае это малопринципиальная деталь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2017, 21:38 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
А. softwarerДа наздоровье. Просто, формулируя свои утверждения, стоит понимать, что изредка встречаются люди, использующие что-то другое :) Где у меня сказано что int - зло? RikitikiInt не всегда хорошо, пример Treeview - ключи начинаются с символа. Я сам часто использую ключи Int, особенно в таблицах - словарях. Или Вас смутило словосочетание "не всегда"? Вы сами себе противоречите. Если смотреть с Вашей "колокольни", я и есть человек, который "встречается изредка". Или мне при населении объекта делать нечто - sqrt(int*24 - 100) и если число кратное 15, то вставлять вторым символом "А", а если нет, то первым "С". Бывают разные задачи. Иногда использую Int иногда смесь символов, цифр, дат, времени. Вот и все, что я хотел сказать. Б. По поводу ВИН. Если ВИНа нет, инспектор на таможне не сможет определить марку, производителя ТС. Вы не сможете заплатить налог, Вам не пропустят на территорию государства. Если Вы прошли доп экспертизы (несколько кругов ада - "недешевого") и Вам написали, что ТС - без ВИН, то при прохождении сертификации Вам снова понадобятся "нервы" и деньги. "Шкурка выченки не стоит" Поэтому для моей БД аксиома: "Вин - известен всегда" , иначе смысла в БД - нет Если ВИН, по ошибке оператора вбит не правильно, поверьте, Вы заплатите еще раз и получите новый документ. Заявку с ВИН подает владелец. По поводу задания. 1. Упростить, упорядочить и организовать создание документов и облегчить их учет при сертификации КТС 2. Максимально минимизировать ошибки оператора (предложить выбор с нужными хар-ками) 3. При изменении в ТЗ, в максимально короткие сроки провести модернизацию БД. Меня интересует правильность сущностей, таблиц и связей. Это всего лишь часть БД, которая касается только КТС, без ЗАКАЗЧИКА, ИСПОЛНИТЕЛЯ, СУБПОДРЯДЧИКА, ИСПЫТАТЕЛЯ, ПРОТОКОЛОВ, НОРМАТИВНОЙ ДОКУМЕНТАЦИИ, ЖУРНАЛОВ Описание Производитель - производит одну или несколько марок ТС, имеет свой мировой идентификатор (WMI), который забит в ВИН (1-3 символы), правда нюанс, одному производителю, может соответствовать несколько кодов WMI, код WMI выдается на 50 лет, потом или продлевают или меняют, также название производителя может меняться (Мерседес-Бенц --- Даймлер-Бенц ----- Даймлеркраслер ---- а сейчас просто Даймлер) создал отдельную таблицу "Производитель КТС" Нужно ли отдельно делать таблицу названий, адресов или немного избыточности не помешает? создал отдельную таблицу "Марка КТС" связь "один ко многим" от "Производителя" к "Марке" Каждая марка делится на несколько ТИП ов и Коммерческих названий . ТИПы - для производителя, коммерческие названия - для потребителя, но одному коммерческому названию может соответствовать несколько ТИП ов (Пример: коммерческое название Ауди А6 - ТИПы: 4Б, 4Ц, 4Ф и т.д.) У ТИПа обязательным атрибутом является номер одобрения типа (каждый ТИП проходит одобрение хотя бы 1 раз в 5 лет) и некая маска ВИН (ВАК????Р???????). У коммерческого названия ограничений нет. создал отдельную таблицу "Коммерческое название" создал отдельную таблицу "ТИП" связь "один ко многим" от "Марки" к "Коммерческому названию" и связь "один ко многим" от "Коммерческого названия" к "Типу". нужна ли связь "один ко многим" от "Марки" к "Типу"? ТИП может делится на варианты , а те в свою очередь на версии , но эта черта настолько расплывчата, что решил сделать одну таблицу для варианта и версии , снова немного избыточности. создал отдельную таблицу "Базовая комплектация" связь "один ко многим" от "Типу" к "Базовой комплектации" Так вот номер одобрения , вариант и версия - это и есть база нашего КТС, зная ВИН и эти 3 параметра, можно рассказать все хар-ки КТС. В свою очередь КТС имеет двигатель (кроме прицепов), а может и 2 двигателя ("гибриды"), поэтому таблица "Двигатель". связь "один ко многим" от "Базовой комплектации" к "Двигателю" Двигатель может быть одно, двух, трех ... топливными, поэтому таблица "Характеристики двигателя" связь "один ко многим" от "Двигателя" к "Характеристики двигателя" КТС имеет оси: одну, две, три ..., поэтому таблица "Ось" связь "один ко многим" от "Базовой комплектации" к "Ось" еще будет таблица "табличек ВИН" (располагаются минимум в 3 разных частях рамы), но она похожа с таблице "Ось" Таблица КТС - это и есть главная таблица, куда оператор должен выбрать все хар-ки. Отличительные хар-ки это ВИН, цвет и дата выпуска, остальное нужно взять из таблиц, которые описаны выше или если нет, добавить эти характеристики вручную. Описание процеса: Клиент подал заявку с указание ВИН, топлива и объема двигателя. + Приложил "техпаспорт" если этот КТС б/у. Так вот, если в техпаспорте есть номер одобрения , вариант и версия - "бинго", все знаем, все умеем. Но есть техпаспорта где указана только марка или коммерческое название (ВИН - указан всегда), нужно максимально сузить параметры выбора для оператора, предложив ему всего пару вариантов, или пусть все вбивает сам (время, ошибки), проще проверить то, что предложила программа, чем самому заполнить 200 полей. Исправленная схема в следующем сообщении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:03 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Структура ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:09 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiГде у меня сказано что int - зло? У Вас сказано, что treeview не воспринимает числовые ключи. И это очень смешно. Кроме того, у Вас подразумевается замечательная логика "глюки клиента определяют архитектурные решения сервера", что как бы тоже смешно, но... вряд ли удастся объяснить, почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:20 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
softwarerrikitikiГде у меня сказано что int - зло? У Вас сказано, что treeview не воспринимает числовые ключи. И это очень смешно. Кроме того, у Вас подразумевается замечательная логика "глюки клиента определяют архитектурные решения сервера", что как бы тоже смешно, но... вряд ли удастся объяснить, почему. Я уже написал, что осознал свою ошибку с естественными ключами. Просто думал может новое веяние, дань моде. В схеме все исправил. И хотелось бы услышать мнение именно по структуре, может нужно полностью избавиться от избыточности, или есть лишние связи, а может какой-то не хватает? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:26 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiЕсли смотреть с Вашей "колокольни", я и есть человек, который "встречается изредка". Или мне при населении объекта делать нечто - sqrt(int*24 - 100) и если число кратное 15, то вставлять вторым символом "А", а если нет, то первым "С" . Бывают разные задачи. А можно подробнее про эту задачу? Мне вот очень интересно, это в каких же задачах нужен ТАКОЙ искусственный ключ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:27 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiИ хотелось бы услышать мнение именно по структуре, может нужно полностью избавиться от избыточности, или есть лишние связи, а может какой-то не хватает? Я бы избавился от большей части ID производитель и коммерческое название - зачем оно почти во всех таблицах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:36 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovrikitikiЕсли смотреть с Вашей "колокольни", я и есть человек, который "встречается изредка". Или мне при населении объекта делать нечто - sqrt(int*24 - 100) и если число кратное 15, то вставлять вторым символом "А", а если нет, то первым "С" . Бывают разные задачи. А можно подробнее про эту задачу? Мне вот очень интересно, это в каких же задачах нужен ТАКОЙ искусственный ключ? Простите если Вас это выражение оскорбило или задело. Мне будет намного интересней Ваше мнение о структуре. По поводу искусственных ключей я ведь прислушался к Вашему мнению. Если Вы заметили я даже не спорил, поскольку понял Вашу правоту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:39 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovЯ бы избавился от большей части ID производитель и коммерческое название - зачем оно почти во всех таблицах? Я правильно понимаю в таблицах "Двигатель", "Ось", "Кузов", во всех после "Базовая комплектация"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:42 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikis_ustinovЯ бы избавился от большей части ID производитель и коммерческое название - зачем оно почти во всех таблицах? Я правильно понимаю в таблицах "Двигатель", "Ось", "Кузов", во всех после "Базовая комплектация"? Не только. Например, зачем производитель в колесное средство? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 11:52 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitiki, Вот зачем здесь: "Таблица КТС - это и есть главная таблица, куда оператор должен выбрать все хар-ки. Отличительные хар-ки это ВИН, цвет и дата выпуска , остальное нужно взять из таблиц, которые описаны выше или если нет, добавить эти характеристики вручную." указывать производителя, тип, название и т.д.? И что значит "если нет, добавить эти характеристики вручную"? Вы представляете, что о вас скажет человек, которому придется анализировать эту "информацию", если в таблице будет тип или коммерческое название, введенные вручную? Если в справочниках нет нужного типа - надо создать новую запись в справочнике, а не плодить мусор. Другое дело, что могут быть ошибки в документах - название в "техпаспорте" не совпадает с названием, которое использует производитель. И вот для таких случаев надо предусмотреть отдельные поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 12:06 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovrikitikiпропущено... Я правильно понимаю в таблицах "Двигатель", "Ось", "Кузов", во всех после "Базовая комплектация"? Не только. Например, зачем производитель в колесное средство? Это один из атрибутов ТС (я так понимаю как отчество у людей), этот атрибут необходим при формировании нескольких документов, но можно просто селектом при формировании док-та по первым трем символам ВИН это делать. Тогда и связь ТС-Производитель не нужна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 12:08 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovrikitiki, Вот зачем здесь: "Таблица КТС - это и есть главная таблица, куда оператор должен выбрать все хар-ки. Отличительные хар-ки это ВИН, цвет и дата выпуска , остальное нужно взять из таблиц, которые описаны выше или если нет, добавить эти характеристики вручную." указывать производителя, тип, название и т.д.? Как Вы предлагаете связать конкретный ВИН с остальными характеристиками? Я это сделал с помощью ключей: idПроизводитель, idТип, idВар_Вер, idкоммерческое название Я писал - название производителя может меняться (выше пример с Мерседесом) У некоторых производителей нет вариантов и версий (мелкосерийное производство) один тип и все, без деления. У разных производителей кодирование типа может совпадать (поэтому главный идентифицирующий атрибут в таблице ТИП это номер одобрения типа Пример: e1*2001/116*0254*23, если в ТИПе хар-ки поменялись не существенно и обозначение типа остается "старым" и через 5 лет производитель захочет и дальше выпускать этот ТИП номер будет e1*2001/116*0254* 24 ) е1 - страна, которая выдала одобрение, 2001/116 - европейская директива, 0254 - идентификационный номер типа, 23 - порядковый номер изменений. Что Вы предлагаете оставить в таблице ТС? Я повторю, идеальный вариант, если известно номер одобрения типа, вариант, версия Вот, что должно получиться в конечном результате https://www.google.com.ua/search?q=certificat de conformite&client=opera&hs=rS2&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjY8ICRkPvRAhVlCpoKHU0pC3cQ_AUICCgB&biw=1280&bih=886&gws_rd=cr,ssl&ei=qz2YWJCtFqOC6AThmLCgCA s_ustinovИ что значит "если нет, добавить эти характеристики вручную"? Вы представляете, что о вас скажет человек, которому придется анализировать эту "информацию", если в таблице будет тип или коммерческое название, введенные вручную? Если в справочниках нет нужного типа - надо создать новую запись в справочнике, а не плодить мусор. Другое дело, что могут быть ошибки в документах - название в "техпаспорте" не совпадает с названием, которое использует производитель. И вот для таких случаев надо предусмотреть отдельные поля. Пардон за мой французский, это и значит "создать новую запись в справочнике" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 12:40 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikis_ustinovпропущено... Не только. Например, зачем производитель в колесное средство? Это один из атрибутов ТС (я так понимаю как отчество у людей), этот атрибут необходим при формировании нескольких документов, но можно просто селектом при формировании док-та по первым трем символам ВИН это делать. Тогда и связь ТС-Производитель не нужна? У вас есть ссылка на "базовую комплектацию", а на основании базовой комплектации можно однозначно определить производителя БЕЗ ИСПОЛЬЗОВАНИЯ VIN. Это делается селектом по табличкам с маркой, названием и тп. А еще лучше сделать не селект, а материализованное (индексированное) представление - такие данные часто будут запрашиваться. То, что такие данные нужны для нескольких документов, не значит, что их надо хранить в той же табличке. Это и называется избыточностью. Кстати, если оставить эти поля в таблице КТС и позволить пользователям заполнять эти поля - у вас будет классический пример ошибок в данных, вызванных избыточностью. Обязательно кто то из пользователей выберет не того производителя. Можно, разумеется, на уровне кода приложения контролировать целостность данных (проверять, что производитель, выбранный пользователем, тот же, что указан для марки и прочих показателей)... Но это, опять же, типичная ошибка проектирования. У вас, насколько я вижу, нет весомых причин денормализовывать данные, и правильнее сделать нормализованную базу и контроль целостности оставить на СУБД - это намного надежнее и в дальнейшем, при расширении функциональности, избавит от очень многих проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 12:49 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Давайте смоделируем ситуацию. Вы - оператор, я - заказчик и по совместительству Ваш сосед-друг. Поехал я в Германию, нашел автомобиль (цена-качество), но не уверен, что авто подойдет по классу выбросов (я не знаю какой класс ЕВРО 2, 3, 4, 5). В нашей стране действует регламент - завозить авто можно только авто классом ЕВРО не ниже 5. Звонить Вам дорого, смс - дешевле. Пишу Вам смс с информацией, которую вижу на авто ВИН (17 символов), дата выпуска, и коммерческое название. Капот закрыт и табличку с типом, вариантом и версией я не вижу. Прошу Вас помочь мне (баня с меня или бутылка). Вы по своей базе пробили, что согласно вин это производитель ВАСЯ, согласно коммерческого названия и производителя выбрали всевозможные ТИПЫ 1. и все предложенные варианты и версии оборудованы двигателями ЕВРО 5. 2. нужно обязательно поднять капот (машина стоит на стоянке в Германии, хозяин живет в Италии), поскольку в варианте ККЕНВЛК стоят двигателя ЕВРО 4. Друг уже думает, ждать ему хозяина или нет. 3. все авто оснащены двигателями ЕВРО 4. Я утрировал ситуацию, но думаю принцип понятен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 13:03 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikis_ustinovrikitiki, Вот зачем здесь: "Таблица КТС - это и есть главная таблица, куда оператор должен выбрать все хар-ки. Отличительные хар-ки это ВИН, цвет и дата выпуска , остальное нужно взять из таблиц, которые описаны выше или если нет, добавить эти характеристики вручную." указывать производителя, тип, название и т.д.? Как Вы предлагаете связать конкретный ВИН с остальными характеристиками? Я это сделал с помощью ключей: idПроизводитель, idТип, idВар_Вер, idкоммерческое название Я писал - название производителя может меняться (выше пример с Мерседесом) У некоторых производителей нет вариантов и версий (мелкосерийное производство) один тип и все, без деления. У разных производителей кодирование типа может совпадать (поэтому главный идентифицирующий атрибут в таблице ТИП это номер одобрения типа Пример: e1*2001/116*0254*23, если в ТИПе хар-ки поменялись не существенно и обозначение типа остается "старым" и через 5 лет производитель захочет и дальше выпускать этот ТИП номер будет e1*2001/116*0254* 24 ) е1 - страна, которая выдала одобрение, 2001/116 - европейская директива, 0254 - идентификационный номер типа, 23 - порядковый номер изменений. Что Вы предлагаете оставить в таблице ТС? ID первичного ключа таблицы ТС, VIN и FK таблицы КТС. Ну и еще ряд вспомогательных полей, но никаких дополнительных внешних ключей быть там не должно (из представленных на рисунке). rikitikis_ustinovИ что значит "если нет, добавить эти характеристики вручную"? Вы представляете, что о вас скажет человек, которому придется анализировать эту "информацию", если в таблице будет тип или коммерческое название, введенные вручную? Если в справочниках нет нужного типа - надо создать новую запись в справочнике, а не плодить мусор. Другое дело, что могут быть ошибки в документах - название в "техпаспорте" не совпадает с названием, которое использует производитель. И вот для таких случаев надо предусмотреть отдельные поля. Пардон за мой французский, это и значит "создать новую запись в справочнике" ?????????????? Если одно сообщение от автора " r ikitiki", а другое сообщение от автора " R ikitiki" - это ведь не значит, что сообщения написали два разных человека. Поверьте, ламер - это самое мягкое, что потом говорят о "проектировщиках" таких БД люди, которым приходится это всё анализировать. Не надо так делать и портить себе карму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 13:10 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiДавайте смоделируем ситуацию. Вы - оператор, я - заказчик и по совместительству Ваш сосед-друг. Поехал я в Германию, нашел автомобиль (цена-качество), но не уверен, что авто подойдет по классу выбросов (я не знаю какой класс ЕВРО 2, 3, 4, 5). В нашей стране действует регламент - завозить авто можно только авто классом ЕВРО не ниже 5. Звонить Вам дорого, смс - дешевле. Пишу Вам смс с информацией, которую вижу на авто ВИН (17 символов), дата выпуска, и коммерческое название. Капот закрыт и табличку с типом, вариантом и версией я не вижу. Прошу Вас помочь мне (баня с меня или бутылка). Вы по своей базе пробили, что согласно вин это производитель ВАСЯ, согласно коммерческого названия и производителя выбрали всевозможные ТИПЫ 1. и все предложенные варианты и версии оборудованы двигателями ЕВРО 5. 2. нужно обязательно поднять капот (машина стоит на стоянке в Германии, хозяин живет в Италии), поскольку в варианте ККЕНВЛК стоят двигателя ЕВРО 4. Друг уже думает, ждать ему хозяина или нет. 3. все авто оснащены двигателями ЕВРО 4. Я утрировал ситуацию, но думаю принцип понятен. Этот пример еще раз показывает, почему надо использовать искусственные ключи - меньше мусора в голове. Вы вбиваете в обычные текстовые поля "смс с информацией, которую вижу на авто ВИН (17 символов), дата выпуска, и коммерческое название". Потом с помощью различных действий (в том числе различных запросов к базе) пытаетесь найти нужную вам информацию. Но вы на основании данных от пользователя не указываете FK к куче разных таблиц - пользователь может ошибиться. И надо разграничить эти данные - то, что сообщил пользователь, от того, какие связи (данные) должны быть исходя из логики БД. Грубо говоря, если один производитель купил другого производителя год назад, а машина сделана два года назад, и надписи на ней соответствующие, и пользователь эти надписи и переслал в СМС - надо в базе хранить ссылку не на того производителя, которого прислал пользователь, а на правильного с точки зрения данных (того, кто купил). А для надписи на машине предусмотреть отдельное поле. Ну или доработать схему БД, чтобы нормально учитывала подобные ситуации. Например, хранить даты "актуальности" производителя и предусмотреть ссылку на другого производителя для ситуаций покупки / объединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 13:31 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovID первичного ключа таблицы ТС, VIN и FK таблицы КТС. Ну и еще ряд вспомогательных полей, но никаких дополнительных внешних ключей быть там не должно (из представленных на рисунке). Вы имели в ввиду ID первичного ключа таблицы ТС, VIN и FK таблицы базовая комплектация КТС Если это так, я с Вами согласен Если все таки FK таблицы КТС, тогда не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 13:34 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiВы имели в ввиду ID первичного ключа таблицы ТС, VIN и FK таблицы базовая комплектация КТС Да. И лучше уж назвать таблицу не базовая комплектация, а "Вид КТС". Базовая комплектация - это немного другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 13:37 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovГрубо говоря, если один производитель купил другого производителя год назад, а машина сделана два года назад, и надписи на ней соответствующие, и пользователь эти надписи и переслал в СМС - надо в базе хранить ссылку не на того производителя, которого прислал пользователь, а на правильного с точки зрения данных (того, кто купил). А для надписи на машине предусмотреть отдельное поле. Ну или доработать схему БД, чтобы нормально учитывала подобные ситуации. Например, хранить даты "актуальности" производителя и предусмотреть ссылку на другого производителя для ситуаций покупки / объединения. Вот здесь Вы заблуждаетесь, мне нужны данные на момент производства, а не на сегодня. Если рассуждать согласно Вашей логике, то Ауди А6 2000 года идентична А6 2017 года, и по логике ржавчины еще не должно быть, поскольку 2017 год на дворе. Надписи на машине - это и есть марка и коммерческое название ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 13:45 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikis_ustinovГрубо говоря, если один производитель купил другого производителя год назад, а машина сделана два года назад, и надписи на ней соответствующие, и пользователь эти надписи и переслал в СМС - надо в базе хранить ссылку не на того производителя, которого прислал пользователь, а на правильного с точки зрения данных (того, кто купил). А для надписи на машине предусмотреть отдельное поле. Ну или доработать схему БД, чтобы нормально учитывала подобные ситуации. Например, хранить даты "актуальности" производителя и предусмотреть ссылку на другого производителя для ситуаций покупки / объединения. Вот здесь Вы заблуждаетесь, мне нужны данные на момент производства, а не на сегодня. Если рассуждать согласно Вашей логике, то Ауди А6 2000 года идентична А6 2017 года, и по логике ржавчины еще не должно быть, поскольку 2017 год на дворе. Надписи на машине - это и есть марка и коммерческое название Ок, приведу другой пример. Например, чоткий любитель антикрыльев на ладах купил себе китайца, и наклеил шильдики от мерседеса. Ну а пользователь это всё и прислал (пользователь может вообще не разбираться в машинах, и просто описал всё, что увидел). Что оператор будет заносить в базу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 13:57 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinov, ВИН вспоминаем аксиому (ВИН всегда известен) - согласно ВИН - это китаец, а потом уже шилдики Поэтому был вопрос выше, по поводу маски ВИНа - WAU???4F?????????? -где можно точно определить ТИП ТС, для каждого ТИПа, своя маска Также 10 символ ВИН (90%) модельный год ТС, у ТС есть разница между модельным годом и годом выпуска, модельный год начинается с июля по июнь месяцы, а год выпуска с января по декабрь, если у Вас автомобиль выпущен 05.09.2015, то год выпуска - 2015, а модельный год - 2016 Если не знаем точную дату производства, проверяем максимум 2 года ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 14:13 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Вспомнил еще один вопрос. Некоторые производители указывают пределы, например: длина мин 2026 макс 2043 например кузов лонг и просто седан на табличке ТС буде стоять длина 2032мм. Мне "2032" заносить в таблицу КТС или создавать новую запись в справочнике (отличие только массы и длины), где мин будет 2032 и мах будет 2032? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 14:27 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikis_ustinov, ВИН вспоминаем аксиому (ВИН всегда известен) - согласно ВИН - это китаец, а потом уже шилдики Поэтому был вопрос выше, по поводу маски ВИНа - WAU???4F?????????? -где можно точно определить ТИП ТС, для каждого ТИПа, своя маска Также 10 символ ВИН (90%) модельный год ТС, у ТС есть разница между модельным годом и годом выпуска, модельный год начинается с июля по июнь месяцы, а год выпуска с января по декабрь, если у Вас автомобиль выпущен 05.09.2015, то год выпуска - 2015, а модельный год - 2016 Если не знаем точную дату производства, проверяем максимум 2 года На вашем месте я бы в табличке вид тс (или базовая комплектация) хранил бы маску вина, которая позволяет приписать конкретное ТС к определенному виду. В таблице КТС просто записывал бы вин в текстовое поле фиксированной длины. И после создания новой записи КТС и ввода вина на уровне приложения пробовал бы поискать по маске (логика поиска может быть сложной, так как структура вина неоднородная). Нашли один вид - его и предложили пользователю. Нашли несколько видов - предлагаем оператору несколько и заодно отправляем сообщение администратору БД, что есть вин, совпадающий с несколькими масками (вероятно, неправильно маски заданы). Не нашли ничего - предлагаем оператору проверить вин (возможно, он с ошибками) и ручками выбрать производителя и т.д. для выбора вида ТС. Если вообще нужного вида ТС нет - добавляется новый вид (марка, производитель и т.п.) в справочник. После выбора пользователем вида ТС система показывает оператору, что будет записано в КТС - производитель, марка, вид и т.д. - на основании FK таблицы базовая комплектация КТС и связанных таблиц (запрос по нескольким таблицам или вьюшка). Оператор сравнивает с "техпаспортом", и если что-то не совпадает - корректирует соответствующее поле. И это поле не FK, а именно текстовое поле. Ну и администратор БД время от времени проверяет все расхождения - то ли ошибка в справочнике (неправильно написана марка, производитель и т.п.), то ли ошибка в конкретном "техпаспорте". В результате и данные правильные, и можно печатать документы с ошибкой в названии модели, повторяя ошибку из техпаспорта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 14:59 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Топик уже стал ниачомъ. Раз ТС убежден, что ВИН это отличный первичный ключ - пусть делает на здоровье. Только непонятно, зачем он пришел за советами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 15:05 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiВспомнил еще один вопрос. Некоторые производители указывают пределы, например: длина мин 2026 макс 2043 например кузов лонг и просто седан на табличке ТС буде стоять длина 2032мм. Мне "2032" заносить в таблицу КТС или создавать новую запись в справочнике (отличие только массы и длины), где мин будет 2032 и мах будет 2032? А это зависит от детализации справочника. Если будете искать в справочнике по вину, то я бы детализацию справочника привязывал к детализации вина. Если можно придумать отдельную маску для каждого варианта длины и тп - создаем отдельную запись в справочнике видов ТС. Нельзя - просто храним длину в КТС. Но поля я бы создал и там и там. Не уверен, насколько это допустимо, но вполне может быть, что машину оттюнинговали с изменением длины. В результате для вида ТС будет в справочнике видов ТС указана одна длина (как выехала с завода), а в КТС другая длина (после тюнинга) - как в техпаспорте (у меня ничего про длину не написано, но мало ли что понимаем под "техпаспортом" и какие они бывают). Названия полей я бы сделал разными, чтобы подчеркнуть разный смысл этих полей - стандартная длина данного вида ТС, и длина конкретного экземпляра ТС. Возможно, надо даже в КТС два поля для длины создать - фактическая длина и длина по "техпаспорту". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 15:12 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovНа вашем месте я бы в табличке вид тс (или базовая комплектация) хранил бы маску вина, которая позволяет приписать конкретное ТС к определенному виду. Спасибо. Просто думал сделать отдельную таблицу связей МАСКА, ТИП s_ustinovВ таблице КТС просто записывал бы вин в текстовое поле фиксированной длины. Если смотреть последнюю структуру, то так и сделал (текстовое поле ВИН длина 17 символов) s_ustinovИ после создания новой записи КТС и ввода вина на уровне приложения пробовал бы поискать по маске (логика поиска может быть сложной, так как структура вина неоднородная). Нашли один вид - его и предложили пользователю. Нашли несколько видов - предлагаем оператору несколько и заодно отправляем сообщение администратору БД, что есть вин, совпадающий с несколькими масками (вероятно, неправильно маски заданы). Не нашли ничего - предлагаем оператору проверить вин (возможно, он с ошибками) и ручками выбрать производителя и т.д. для выбора вида ТС. Если вообще нужного вида ТС нет - добавляется новый вид (марка, производитель и т.п.) в справочник. Понятно, так и задумывалось. s_ustinovПосле выбора пользователем вида ТС система показывает оператору, что будет записано в КТС - производитель, марка, вид и т.д. - на основании FK таблицы базовая комплектация КТС и связанных таблиц (запрос по нескольким таблицам или вьюшка). Оператор сравнивает с "техпаспортом", и если что-то не совпадает - корректирует соответствующее поле. И это поле не FK, а именно текстовое поле. Ну и администратор БД время от времени проверяет все расхождения - то ли ошибка в справочнике (неправильно написана марка, производитель и т.п.), то ли ошибка в конкретном "техпаспорте". В результате и данные правильные, и можно печатать документы с ошибкой в названии модели, повторяя ошибку из техпаспорта. Корректировать оператор сможет только определенные поля (масса, длина, количество сидений) s_ustinovНе уверен, насколько это допустимо, но вполне может быть, что машину оттюнинговали с изменением длины. В результате для вида ТС будет в справочнике видов ТС указана одна длина (как выехала с завода), а в КТС другая длина (после тюнинга) - как в техпаспорте (у меня ничего про длину не написано, но мало ли что понимаем под "техпаспортом" и какие они бывают). Одобрения типа имеет свой установленный бланк (одинаковый во всем мире) и набор характеристик (не от меня зависит). У одного производителя масса или длина ТИПа постоянная у другого варьируется в пределах от и до (в таблице Базовая комплектация КТС (рисунок со структурой) есть атрибуты - мин и мах для длины). Производитель получает одобрение ТИПа , а не ВАРИАНТа или ВЕРСИИ (я официально у завода производителя могу запросить только одобрение типа) поэтому он может в одобрении указывать предел, но когда авто выезжает с завода, производитель обязан нанести на табличку точную массу авто (а не предел как в одобрении типа). Создать новую запись в таблице базовая комплектация КТС? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 15:52 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikis_ustinovПосле выбора пользователем вида ТС система показывает оператору, что будет записано в КТС - производитель, марка, вид и т.д. - на основании FK таблицы базовая комплектация КТС и связанных таблиц (запрос по нескольким таблицам или вьюшка). Оператор сравнивает с "техпаспортом", и если что-то не совпадает - корректирует соответствующее поле. И это поле не FK, а именно текстовое поле. Ну и администратор БД время от времени проверяет все расхождения - то ли ошибка в справочнике (неправильно написана марка, производитель и т.п.), то ли ошибка в конкретном "техпаспорте". В результате и данные правильные, и можно печатать документы с ошибкой в названии модели, повторяя ошибку из техпаспорта. Корректировать оператор сможет только определенные поля (масса, длина, количество сидений) Ошибки и расхождения в документах. Например у меня в загранпаспорте фамилия латинницей написана одним способом, а в кредитке - другим. Всегда желательно учитывать ситуацию, что в справочнике написано одно название, и написано корректно. А в документе написано другое название в результате ошибки или по другим причинам. И при этом в базе надо сохранить именно то название, которое в документе. Если оператор может корректировать только определенные поля - что он должен делать в такой ситуации? rikitikis_ustinovНе уверен, насколько это допустимо, но вполне может быть, что машину оттюнинговали с изменением длины. В результате для вида ТС будет в справочнике видов ТС указана одна длина (как выехала с завода), а в КТС другая длина (после тюнинга) - как в техпаспорте (у меня ничего про длину не написано, но мало ли что понимаем под "техпаспортом" и какие они бывают). Одобрения типа имеет свой установленный бланк (одинаковый во всем мире) и набор характеристик (не от меня зависит). У одного производителя масса или длина ТИПа постоянная у другого варьируется в пределах от и до (в таблице Базовая комплектация КТС (рисунок со структурой) есть атрибуты - мин и мах для длины). Производитель получает одобрение ТИПа , а не ВАРИАНТа или ВЕРСИИ (я официально у завода производителя могу запросить только одобрение типа) поэтому он может в одобрении указывать предел, но когда авто выезжает с завода, производитель обязан нанести на табличку точную массу авто (а не предел как в одобрении типа). Создать новую запись в таблице базовая комплектация КТС? Я раньше сказал свое мнение. Новая запись в таблице базовая комплектация КТС создается только в том случае, если для неё можно придумать уникальную маску ВИН. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 16:09 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Уточнения по структуре Все таблицы, кроме КТС - это справочник отличный первичный ключ для справочника - номер одобрения типа, вариант, версия (обязательно эти 3 параметра вместе) Таблица КТС - это рабочая таблица оператора (какие поля там должны быть?) нам нужно записать конкретный автомобиль. Пример с длиной и массой не очень подходящий, вспомнил еще один пример. Завод производитель указывает оригинальные (те, что идут с завода) шины и диски, для определенного (номера одобрения типа, варианта, версии) авто - эти данные занесены в справочник (таблица "Ось"), но также производитель всегда прописывает еще 2-3 варианта на выбор владельца авто. Так вот оператор должен указать фактические данные по шинам и дискам, я ему могу предложить для выбора только оригинальные. Вот собственно и вопрос, рабочая таблица КТС должна иметь один ключ id - для дальнейшего использования, а остальные 200 полей текстовые, где заноситься фактическая информация (плюс добавляются таблицы по двигателю, осям, кузову, выбросам, табличкам) или поле с ключом id и поле с ключом из таблицы "Базовая комплектация КТС", но тогда фактические данные оформлять как добавление новой записи в справочник? заметьте про ВИН не слова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 16:58 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinovОшибки и расхождения в документах. Например у меня в загранпаспорте фамилия латинницей написана одним способом, а в кредитке - другим. Паспорт выдавали больше 15 лет назад? правила транслитерации изменились у меня такая же ситуация. s_ustinov Всегда желательно учитывать ситуацию, что в справочнике написано одно название, и написано корректно. А в документе написано другое название в результате ошибки или по другим причинам . И при этом в базе надо сохранить именно то название, которое в документе. Подскажите как это реализовать? Отдельная таблица сравнения? rikitikiЕсли оператор может корректировать только определенные поля - что он должен делать в такой ситуации?Иногда просто признать свою ошибку. rikitikiЯ раньше сказал свое мнение. Новая запись в таблице базовая комплектация КТС создается только в том случае, если для неё можно придумать уникальную маску ВИН. Пока писал предыдущее сообщение, не видел, что Вы написали свой ответ. Значит рабочая таблица с полями + структура справочника? Тогда вопрос по справочнику, оставляем во всех таблицах только id_типа, id_Вар_вер? Что делать с таблицей производитель, марка, коммерческое название? какие FK там делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 17:26 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
RikitikiУточнения по структуре Все таблицы, кроме КТС - это справочник отличный первичный ключ для справочника - номер одобрения типа, вариант, версия (обязательно эти 3 параметра вместе) Таблица КТС - это рабочая таблица оператора (какие поля там должны быть?) нам нужно записать конкретный автомобиль. Пример с длиной и массой не очень подходящий, вспомнил еще один пример. Завод производитель указывает оригинальные (те, что идут с завода) шины и диски, для определенного (номера одобрения типа, варианта, версии) авто - эти данные занесены в справочник (таблица "Ось"), но также производитель всегда прописывает еще 2-3 варианта на выбор владельца авто. Так вот оператор должен указать фактические данные по шинам и дискам, я ему могу предложить для выбора только оригинальные. Вот собственно и вопрос, рабочая таблица КТС должна иметь один ключ id - для дальнейшего использования, а остальные 200 полей текстовые, где заноситься фактическая информация (плюс добавляются таблицы по двигателю, осям, кузову, выбросам, табличкам) или поле с ключом id и поле с ключом из таблицы "Базовая комплектация КТС", но тогда фактические данные оформлять как добавление новой записи в справочник? заметьте про ВИН не слова Непонятно. Нарисуйте два варианта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 18:28 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Rikitikis_ustinov Всегда желательно учитывать ситуацию, что в справочнике написано одно название, и написано корректно. А в документе написано другое название в результате ошибки или по другим причинам . И при этом в базе надо сохранить именно то название, которое в документе. Подскажите как это реализовать? Отдельная таблица сравнения? Зачем отдельная таблица? RikitikirikitikiЕсли оператор может корректировать только определенные поля - что он должен делать в такой ситуации?Иногда просто признать свою ошибку. Если документ выдал некий гос орган - можно убить кучу времени, получая правильный вариант документа. Еще раз - речь не идет об ошибке оператора. Мы живем в реальном мире, где сущность одна (тип автомобиля), а вот название этой сущности в конкретном документе - другое. И при создании и печати пакета документов надо использовать не правильное название из справочника, а неправильное из документа. RikitikirikitikiЯ раньше сказал свое мнение. Новая запись в таблице базовая комплектация КТС создается только в том случае, если для неё можно придумать уникальную маску ВИН. Пока писал предыдущее сообщение, не видел, что Вы написали свой ответ. Значит рабочая таблица с полями + структура справочника? Тогда вопрос по справочнику, оставляем во всех таблицах только id_типа, id_Вар_вер? Что делать с таблицей производитель, марка, коммерческое название? какие FK там делать? ?????? Просто нарисуйте схему БД без избыточности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 18:35 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinov, структуру нарисую уже завтра, вечером пишу с телефона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 18:47 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Rikitiki... пропущено Int не всегда хорошо, пример Treeview - ключи начинаются с символа. ... пропущено В Вашем случае это не играет роли. VIN может начинаться с цифры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 20:15 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Справочник ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:00 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Рабочая таблица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 10:02 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Rikitiki, тип, марка, название, производитель - надо выстроить цепочкой, как было в самом начале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:55 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinov, так? не могу понять какие связи делать Марка имеет несколько Коммерческих названий Коммерческое название может иметь несколько типов Но коммерческого названия может и не быть (часто у китайцев, у большинства прицепов) Как эти 3 таблицы связать между собой? Может какую-то таблицу связей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:28 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Rikitikiтак? не могу понять какие связи делать Марка имеет несколько Коммерческих названий Коммерческое название может иметь несколько типов Но коммерческого названия может и не быть (часто у китайцев, у большинства прицепов) Как эти 3 таблицы связать между собой? Может какую-то таблицу связей? Примерно. Если нет коммерческого названия - придумываем :) Например, повторяем название производителя. Например, из таблицы коммерческого названия выкидываем производителя - можно получить по марке. В Тип КТС выкидываем производитель и марку. И так далее. Структура должна быть максимально однородной. У вас получается иерархия с фиксированным количеством уровней. Каждый уровень - своя таблица. Если у конкретной машины уровня не существует - создавайте искусственно, ничего страшного не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 16:50 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
s_ustinov, Понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 17:26 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
Заметил, что некоторые вместо Date используют Int. Насколько это целесообразно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 09:30 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
rikitikiЗаметил, что некоторые вместо Date используют Int. Насколько это целесообразно?Это бред. Пользы - ноль. Крайне неудобно. Бесконечные преобразования (в отчетах, расчетах, отображениях и пр.) быстро выведут вас из терпения. Экономия на спичках в пользу дощечки для добывания огня. На дате можно сэкономить только одним способом - использовать короткую дату (smalldatetime in mssql). Я получал экономию в скорости в 10% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 10:25 |
|
||
|
БД транспортное средство
|
|||
|---|---|---|---|
|
#18+
LSV, Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 10:34 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1540210]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
228ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 344ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...