2009-12-18 3 views
0

Я моя база данных создана, как например:SQL Virtual Таблица

Каждый продукт у меня есть своя собственная таблица, в которой он записывает количество проданных товаров/сделки # (так столбец 1 является «TransactionID», колонка 2 является «количество «)

ех) р-подхалим (где р является показателем„продукта“)

есть также столы для каждого года, которые держат записи каждой операции, которая прошла через. Каждая из этих таблиц содержит следующие столбцы: «transactionID», «date», «time», «pt_CA», «pt_DB», «pt_VC», «pt_MC», «pt_CH», «pt_AM»

ex) sales-2008, sales-2009 и т. д.

Я хотел бы иметь возможность ссылаться на одну таблицу, которая содержит все записи за каждый год, без необходимости менять sql для таблицы, чтобы включить новый год ,

Так, например, я бы хотел, чтобы запросить все сделки для «р-подхалим», я не хочу, чтобы впечатать

SELECT sales-2008.date, sales-2009.date 
    FROM sales-2008, sales-2009 
WHERE sales-2008.transactionID = p-backScratcher.transactionID 
    OR sales-2009.transactionID = p-backScratcher.transactionID 

... а:

SELECT sales.date 
    FROM sales 
WHERE sales.transactionID = p-backScratcher.transactionID 
+0

Этот дизайн кажется довольно сложным для работы. Есть ли причина для выбора этого дизайна над другими, с которыми может быть легче работать? –

+0

Моя первая мысль заключалась в том, чтобы включить все в один стол; где все прошлое столбца «pt_AM» будет количеством продукта.В принципе, в любое время я бы сделал что-то подобное, у меня в конечном итоге закончились столбцы (в конечном счете). Наличие таблицы для каждого продукта гарантирует мне, что a) у меня не будет таблиц с избыточными нулевыми записями, и b) время поиска будет короче, разделив продажи по годам; рассматриваемые отчеты обычно генерируются либо ежемесячно, либо в течение определенного года (хотя из-за высказанных опасностей я, вероятно, просто консолидирую всю информацию транзакции в одну таблицу) – JakeTheSnake

ответ

2

Я хотел бы иметь возможность ссылаться на одну таблицу, которая содержит все записи за каждый год, без необходимости менять sql для таблицы, чтобы включить новый год.

Вот почему вы не должны использовать одну таблицу за продукт и один стол в год.

Что вам нужно, это одна таблица «Продукт» и одна таблица «Транзакция».

+2

Точно. Это плохой дизайн. –

1

То, что вы ищете, называется «View», который в значительной степени является хранимым оператором, который является списком правильно отформатированных результатов. Вы можете запросить его напрямую, как это таблица.

4

В SQL, как ответ государств Кайла, вы можете создать View, который является своего рода виртуальной таблицы, но я настоятельно рекомендую вам получить книгу или Google, проектирования реляционных баз данных, прежде чем вы присоединитесь к структуре базы данных.

-2

Не знаете, насколько велик этот проект или какие ваши конкретные требования (например, если у вас есть код, связанный с ним), но вы можете посмотреть на перенос данных на MS SQL (или MySQL и т. Д.). SQL Server имеет бесплатную настольную версию, но поддерживает только ограниченный набор функций (в него включены представления).

MySQL, PostGre и т. Д. Поддерживают функции, которые вы ищете, включая унаследованные таблицы в PostGre (не совсем то, что вам нужно, но подобное).

Я не работал с Access некоторое время, и я не уверен, что он будет поддерживать функции, которые вы ищете.

+0

Почему вы думаете, что «Доступ» не будет поддерживать правильный дизайн таблицы? –

+0

На самом деле я сказал, что не уверен, поддерживал ли он функции, которые он искал, или нет. Я не сказал, что это не так. – GrayWizardx