Я не знаю о mySQL, но в SQL Server он позволяет вам определять поля таким образом, чтобы общее количество используемых байтов было больше, чем общее количество байтов, которые фактически могут быть сохранены в записи. Это плохо. Рано или поздно вы получите строку, в которой достигнут предел и вы не можете вставить данные.
Гораздо лучше спроектировать структуру вашей базы данных с учетом ограничений на размер строк.
Кроме того, да, вы не хотите, чтобы люди помещали 200 символов в поле, где максимальное значение должно быть 10. Если они это сделают, это почти всегда неверные данные.
Вы говорите, что я могу ограничить это на уровне приложения. Но данные не попадают в базу данных только из одного приложения. Иногда его используют несколько приложений, иногда данные импортируются, а иногда исправляются вручную из окна запроса (например, обновите все записи, чтобы добавить 10% к цене). Если какой-либо из этих других источников данных не знает о правилах, которые вы вводите в свое приложение, у вас будут плохие, бесполезные данные в вашей базе данных. Целостность данных должна быть обеспечена на уровне базы данных (что не мешает вам также проверять, прежде чем вы попытаетесь ввести данные), иначе у вас нет целостности. Кроме того, по моему опыту, люди, которые слишком ленивы при проектировании своей базы данных, часто также слишком ленивы, чтобы на самом деле вводить ограничения в приложение, а проверка целостности данных вообще отсутствует.
У них есть слово для баз данных без целостности данных - бесполезно.
person
HLGEM
schedule
12.08.2009