Я занимаюсь этой проблемой здесь, в компании: у нас есть разные клиенты, которым нужны разные поля в одной таблице, но мы не хотим иметь таблицу с 300 столбцами, которая является inneficient , трудно использовать и так далее. Пример:Таблицы SQL Server распространяются на многие таблицы
table_products имеет следующие поля: product_id, product_name, product_cost.
Тогда первому клиенту «Х» необходимо поле product_registerid. клиенту «Y» требуется поле product_zipareaid.
Это происходит по разным причинам. Пример: они из разных состояний, которые имеют разные правила.
В этот момент мы придумали это решение, которое мне не нравится: product_id, product_name, product_cost, product_personal. В этом product_personal мы сохранили такие значения, как '{product_registerid: 001; product_zipareaid: 001-000131}'.
Я придумал теоретическое решение: расширьте таблицу, и sql узнает, когда я сделаю запрос в расширенной таблице, и отправьте мне столбец с колонкой главной таблицы. Что-то вроде:
table_products with columns product_id, product_name, product_cost. table_products_x со столбцом product_registerid. table_products_y со столбцом product_zipareaid.
И querys вернется:
1. выберите * из table_products где product_registerid = 001: product_id, product_name, product_cost, product_registerid 1, iphone, 599, 001.
2. выберите * from table_products, где product_zipareaid = 000-000110: product_id, product_name, product_cost, product_zipareaid 1, iphone, 599, 000-000110.
Итак, я принимаю различные предложения для решения нашей проблемы. Спасибо заранее!
В случае, если я хочу, чтобы свойство имело разные типы, такие как blob, int, varchar. Что вы предлагаете? Кроме того, я хотел бы, чтобы доставка была простой в использовании для моих разработчиков .net, которые используют моделирование на основе linq, поэтому они могут делать что-то вроде db.table_products.product_zipareaid = 000-000102. Спасибо. –
Для чего угодно, кроме blobs, вы можете просто использовать varchar или nvarchar, которые могут быть отнесены к числовым во время запроса. Если вам действительно нужны свойства blob, вы должны сохранить их в своей таблице, аналогичной этой, но PropertyValue будет иметь тип blob.Я не специалист по linq, поэтому я не знаю, какие ограничения у него есть. –