Наиболее распространённые и серьёзные ошибки при проектировании (моделировании) баз данных

Никакая Информационная Система не обходится без базы данных, которая является вообще основой некоторых проектов. Мало одной хорошо спрограммированной и спроектированной оболочки. Хорошая оболочка под АИС с хранилищем данных стоит порядка 10000 долларов США, но в это же время само хранилище может стоить и сотни тысяч.
Это было лирическим отступлением, а теперь сама суть…

Многие ошибочно полагают, что накидав простенькую модель в CASE средстве наподобие ERWin’а, на этом работа заканчивается, и они глубоко заблуждаются. Есть логическая модель, есть физическая модель, и вот тут то и возникают ошибки. Если вы делаете модель под MySQL, то вы делаете модель на английском языке, так и для MS Access не стоит делать названия полей на русском языке! Так же ни в коем случае НЕЛЬЗЯ делать пробелы в названиях полей таблиц или же в названиях самих таблиц! Вместо пробела ставьте _ и не ошибётесь, так как на вас меньше будут грешить при разработке программной оболочки. Также не стоит делать поля, которые казалось бы, должны иметь целочисленный тип ставить им тип integer. Это касается телефонных номеров и прочих полей, схожих по значению. Сделайте лучше поле типа String и в дальнейшем вы сможете избежать некоторых проблем, например с кодом города, кодом страны, если используется + и так далее.

Вот ещё что на мой взгляд, является грубой ошибкой, так это то, что некоторые делают связь с одной таблицей через три и более. То есть чтобы добраться до 1ой таблицы нужно связаться с ещё тремя таблицами и только после этого получить значение той что нужно. При программировании запрос получается очень сложным, и для дальнейшей оптимизации с целью ускорения работы программы придётся переделывать как базу, так и программу.

Так же не следует ошибочно полагать, что можно обойтись только одной Subject Area (Main). Желательно, но не обязательно, если вы хотите довольно читабельную модель, и тем более если не планируете сами разрабатывать программную оболочку, то готовьтесь заплатить больше или вообще иметь программу такую, как сделана модель, так как не каждый программист будет дорабатывать ваши углы и шероховатости, до идеально гладкой поверхности.
На этом пока и остановлюсь. Будут ещё вопросы или если встречусь с ещё одной кривой моделью и базой, то возможно напишу продолжение.

P.S. Всегда следите за связями. Если вы хотите чтобы в списке контактов был не 1 контакт, а множество контактов, то и не нужно делать связь через одно место… удачной разработки ??


Присоединяйтесь к моему телеграмм каналу

Читайте еще один блог о путешествиях

Подписывайтесь на мой YouTube канал

2 комментария

  • Здравствуйте! У меня возникла такая проблема… Я с помощью видео с вашего сайта осваиваю работу с базами данных. Всё понятно и доходчиво, за это вам большое спасибо! Только у меня не получается подключить базу данных к Microsoft Visual Studio. Выходит ошибка —————————

    —————————
    The database ‘C:\USERS\1\DESKTOP\БАЗЫ\PROBNAYA_1.MDF’ cannot be opened because it is version 869. This server supports version 852 and earlier. A downgrade path is not supported.

    Could not open new database ‘C:\USERS\1\DESKTOP\БАЗЫ\PROBNAYA_1.MDF’. CREATE DATABASE is aborted.

    An attempt to attach an auto-named database for file C:\Users\1\Desktop\Базы\Probnaya_1.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
    Я понимаю что не совпадает версия сервера и базы, но как это исправить не пойму… Подскажите, что сделать чтобы исправить данную ситуацию. Спасибо!

    • Здравствуйте. К сожалению модуль отслеживающий спам заблокировал ваш комментарий, и обнаружил я это только сейчас.
      Вопрос еще актуален?
      Судя по тексту ошибки, у вас слишком новая версия файла БД которая не поддерживается.
      Установите более старую версию Access.

Добавить комментарий

Войти с помощью: 

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.