#sql #oracle
#sql #Oracle
Вопрос:
В настоящее время я выполняю школьный проект, в котором нам нужно создать базу данных для компании по управлению недвижимостью. У меня есть около 14 таблиц, но только эти две имеют отношение к моему вопросу: BUILDING
и TaxRates
.
Запрашивается информация о налогах (в долларах США) за год для каждого здания. Налоги рассчитываются на основе ставок в TaxRates
таблице и стоимости земли в Building
таблице. Каждый год добавляются новые значения, а также сохраняются исторические показатели.
Как я могу обновить налоги в Building
таблице, чтобы указанная сумма учитывала текущий год, а также город?
Я предполагаю, что мне нужно начать так, но я не уверен, что делать дальше и как учитывать текущий год.
UPDATE Building
SET taxes =
CASE WHEN
CREATE TABLE Building (
buildingID NUMBER (10) NOT NULL PRIMARY KEY,
addressID NUMBER (10) NOT NULL,
qtyUnits NUMBER (3) NOT NULL,
landValue NUMBER (15) NOT NULL,
purchasePrice NUMBER (15) NOT NULL
taxes NUMBER (15) NOT NULL
);
CREATE TABLE TaxRates (
taxID NUMBER (5) NOT NULL PRIMARY KEY,
city VARCHAR2 (50) NOT NULL,
taxRate NUMBER (3) NOT NULL,
year NUMBER (4) NOT NULL,
);
РЕДАКТИРОВАТЬ: На самом деле есть еще одна таблица, которая имеет значение. AddressDetails
Таблица. Ставка налога варьируется в зависимости от города.
CREATE TABLE AdressDetails (
addressID NUMBER (10) NOT NULL PRIMARY KEY,
streetNo Number (10) NOT NULL,
streetName VARCHAR2 (50) NOT NULL,
postalCode VARCHAR2 (6) NOT NULL Check
city VARCHAR2 (10) NOT NULL,
province VARCHAR2 (10) NOT NULL,
buildingID NUMBER (10) NOT NULL,
)```
Комментарии:
1. Вы должны правильно сообщить нам, каково условие соединения между таблицами, а не заставлять нас выяснять это самостоятельно. Ваш дизайн также кажется мне подозрительным, например, что
buildingID
делает вAdressDetails
? Кроме того, добавьте несколько выборочных строк из каждой соответствующей таблицы, чтобы стало проще ее моделировать и предоставить вам решение, которое ближе к вашим ожиданиям.
Ответ №1:
Если вы хотите сохранить данные для каждого здания с указанием суммы налога за определенный год, вам понадобится другая таблица со столбцами здание, уплаченный налог и год.
Таким образом, столбец taxes исчезнет из вашей таблицы building, а новая таблица building_tax будет иметь внешние ключи к таблицам building и tax
Еще одна вещь, которую следует учитывать, будет ли стоимость земли меняться каждый год и будет ли она частью расчета налога??
Комментарии:
1. Налоги, отображаемые в
Building
таблице, относятся к текущему году. Для целей этого проекта нам не нужно сохранять историческую стоимость или исторические налоги в долларах. Все, что нам нужно, это таблица с историческими ставками налогов. Я знаю, что это не имеет особого смысла, но это то, что запрашивается. РЕДАКТИРОВАТЬ: В принципе, я хочу, чтобы столбец налоги обновлялся на основе налоговой ставки и стоимости земли, но налоговая ставка должна быть получена из таблицы налоговых ставок путем проверки соответствия столбца год текущему году.2. Одна из возможностей — написать триггер в таблице налогов, после каждой вставки переходить к построению таблицы и устанавливать новое рассчитанное значение налога.