Size: a a a

SqlCom.ru - Стиль жизни SQL

2021 January 24

S

Sergey in SqlCom.ru - Стиль жизни SQL
Всем привет. Друзья, есть вопрос который давно волнует и остаётся непонятным. Хочется уже прояснить ситуацию.
Для того чтобы база данных правильно работала и соблюдались некие нормы - проводят нормализацию. Соответственно, схема бд приобретает вид таблиц справочников и таблиц фактов со связями.
Но в реальности данные на вход базы поступают в виде плоской таблицы из 100+ столбцов, имеющих совершенно разное смысловое содержание. Как в таком случае быть? Проводить нормализацию? или использовать как есть?
Я просто понимаю, что если нормализацию провести, потом для формирования views будет 30-50 join'ов, что тоже не хорошо.
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Sergey
Всем привет. Друзья, есть вопрос который давно волнует и остаётся непонятным. Хочется уже прояснить ситуацию.
Для того чтобы база данных правильно работала и соблюдались некие нормы - проводят нормализацию. Соответственно, схема бд приобретает вид таблиц справочников и таблиц фактов со связями.
Но в реальности данные на вход базы поступают в виде плоской таблицы из 100+ столбцов, имеющих совершенно разное смысловое содержание. Как в таком случае быть? Проводить нормализацию? или использовать как есть?
Я просто понимаю, что если нормализацию провести, потом для формирования views будет 30-50 join'ов, что тоже не хорошо.
Все зависит от того что вам важнее.
Чтение\запись\занимаемое место.
Читайте про сравнение data vault и  anchor model
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
Все зависит от того что вам важнее.
Чтение\запись\занимаемое место.
Читайте про сравнение data vault и  anchor model
Мне важна правильность и скорость. Это главное, место можно добавить.
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
Все зависит от того что вам важнее.
Чтение\запись\занимаемое место.
Читайте про сравнение data vault и  anchor model
То бишь в данном вопросе нет однозначного ответа насколько я понимаю. Нормализация это ведь рекомендации к планированию бд
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Sergey
Мне важна правильность и скорость. Это главное, место можно добавить.
Правильность - это сугубо субъективный вопрос.
Что правильно для вас, то неправильно для других.
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Sergey
То бишь в данном вопросе нет однозначного ответа насколько я понимаю. Нормализация это ведь рекомендации к планированию бд
Да верно понимаете.
Нормализация - это не всегда хорошо.
Все зависит от типа вашего хранилища.
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
Да верно понимаете.
Нормализация - это не всегда хорошо.
Все зависит от типа вашего хранилища.
Спасибо. Услышал 👍
источник

IK

Ivan Kuzmin in SqlCom.ru - Стиль жизни SQL
Sergey
Всем привет. Друзья, есть вопрос который давно волнует и остаётся непонятным. Хочется уже прояснить ситуацию.
Для того чтобы база данных правильно работала и соблюдались некие нормы - проводят нормализацию. Соответственно, схема бд приобретает вид таблиц справочников и таблиц фактов со связями.
Но в реальности данные на вход базы поступают в виде плоской таблицы из 100+ столбцов, имеющих совершенно разное смысловое содержание. Как в таком случае быть? Проводить нормализацию? или использовать как есть?
Я просто понимаю, что если нормализацию провести, потом для формирования views будет 30-50 join'ов, что тоже не хорошо.
Посмотрите на колоночное хранение данных, culumnstore в mssql или clickhouse
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Ivan Kuzmin
Посмотрите на колоночное хранение данных, culumnstore в mssql или clickhouse
А что на него смотреть?
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Ivan Kuzmin
Посмотрите на колоночное хранение данных, culumnstore в mssql или clickhouse
А помечу вы решили, что это dwh  а не oltp?
источник

IK

Ivan Kuzmin in SqlCom.ru - Стиль жизни SQL
Не знаю, про 1000 колонок в одной таблице, может и неправ
источник

Л

Лучший ник in SqlCom.ru - Стиль жизни SQL
Sergey
Всем привет. Друзья, есть вопрос который давно волнует и остаётся непонятным. Хочется уже прояснить ситуацию.
Для того чтобы база данных правильно работала и соблюдались некие нормы - проводят нормализацию. Соответственно, схема бд приобретает вид таблиц справочников и таблиц фактов со связями.
Но в реальности данные на вход базы поступают в виде плоской таблицы из 100+ столбцов, имеющих совершенно разное смысловое содержание. Как в таком случае быть? Проводить нормализацию? или использовать как есть?
Я просто понимаю, что если нормализацию провести, потом для формирования views будет 30-50 join'ов, что тоже не хорошо.
Так надо структурировать данные перед тем как в бд записывать.
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Лучший ник
Так надо структурировать данные перед тем как в бд записывать.
Про это и вопрос. Почитайте внимательнее о чем я спросил
источник

Л

Лучший ник in SqlCom.ru - Стиль жизни SQL
Sergey
Про это и вопрос. Почитайте внимательнее о чем я спросил
Это делается руками или внешними программами/скриптами
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Лучший ник
Это делается руками или внешними программами/скриптами
Делается что? Нормализация входных данных?
А с join ами что делать?
источник

Л

Лучший ник in SqlCom.ru - Стиль жизни SQL
Нет же, нужно структурировать данные перед тем как записывать в базу данных. Потом и с джоинами нормально всё будет
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Лучший ник
Нет же, нужно структурировать данные перед тем как записывать в базу данных. Потом и с джоинами нормально всё будет
Я не понимаю видимо, что вы имеете под "нужно структурировать данные".. И что значит потом с джойнами будет все нормально.. Как вы соедините в одно view несколько таблиц, соединяющихся внешними ключами?
источник

Л

Лучший ник in SqlCom.ru - Стиль жизни SQL
У Вас же в базе данных хранятся взаимосвязанные данные.
Перед записью Вы должны быть уверены что база данных нормализованная для принятия этих записей и дальнейшей инициализации
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Лучший ник
У Вас же в базе данных хранятся взаимосвязанные данные.
Перед записью Вы должны быть уверены что база данных нормализованная для принятия этих записей и дальнейшей инициализации
А если будет храниться в одной плоской таблице, что так нельзя что-ли записывать?
источник

S

Sergey in SqlCom.ru - Стиль жизни SQL
Лучший ник
У Вас же в базе данных хранятся взаимосвязанные данные.
Перед записью Вы должны быть уверены что база данных нормализованная для принятия этих записей и дальнейшей инициализации
У меня нет базы данных. Сейчас у меня есть выгрузка из систем, которая представляет одну плоскую таблицу.
источник