INSERT проблемы с 2 таблицами

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

String addAddress = txtAddAddress.getText();
            String addRentAmt = txtAddAmt.getText();

            Statement lstatement = conn.createStatement();

            ls_query = "INSERT INTO Property(Address,RentAmt) "
            + "VALUES ('" + addAddress + "'," + addRentAmt + ")";
        System.out.println(ls_query);

Но мне также нужно вставить его как addressID в мою таблицу арендаторов.

вот мой код sql, чтобы вы могли видеть структуру моих 2 таблиц.

 CREATE TABLE IF NOT EXISTS `Property` (
  `AddressID` int(10) NOT NULL,
  `Address` varchar(100) NOT NULL,
  `RentAmt` double NOT NULL,
  PRIMARY KEY (`AddressID`),
  UNIQUE KEY `Address` (`Address`),
  KEY `Address_2` (`Address`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;

CREATE TABLE IF NOT EXISTS `Renter` (
  `RenterID` int(20) NOT NULL AUTO_INCREMENT,
  `AddressID` int(10) DEFAULT NULL,
  `FirstName` varchar(30) NOT NULL,
  `LastName` varchar(30) NOT NULL,
  `CellPhone` varchar(15) NOT NULL DEFAULT '000-000-0000',
  `DepositPaid` char(1) NOT NULL DEFAULT 'N',
  `DepositAmtPaid` decimal(6,0) NOT NULL DEFAULT '0',
  PRIMARY KEY (`RenterID`),
  UNIQUE KEY `AddressID` (`AddressID`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

вот моя инструкция по добавлению арендатора

String addFirstName = txtFirstName.getText();
String addAddress = txtShowAddress.getText();
String addLastName = txtLastName.getText();
String addCellPhone = txtCellPhone.getText();
String addDepositAmtPaid = txtDepositAmtPaid.getText();
Statement lstatement = conn.createStatement();

ls_query = "INSERT INTO Renter 
(FirstName,LastName,CellPhone,DepositPaid,DepositAmtPaid) "
                        + "VALUES('" 
                        + addFirstName + "','" 
                        + addLastName + "','" 
                        + addCellPhone + "','" 
                        + addDepositPaid + "'," 
                        + addDepositAmtPaid + ","
                     + "' WHERE RenterID = '" + addressID + "'" ;

Но это не работает


person TraciBee    schedule 24.11.2013    source источник
comment
Если вы поместите адрес в таблицу арендаторов (что является плохой идеей), он будет удален при удалении арендатора. Имеет смысл, верно?   -  person GolezTrol    schedule 24.11.2013
comment
sqlfiddle.com/#!2/a7b31   -  person Mihai    schedule 24.11.2013


Ответы (1)


Я думаю, что лучшим дизайном было бы хранить информацию об адресе там, где это имеет смысл - в таблице свойств.

Подумайте о том, что вы хотите представить, не беспокоясь о таблицах.

Может ли Недвижимость быть арендована более чем одним Арендатором одновременно? Ваш дизайн допускает соседей по комнате?

Хотите сохранить историю? Может ли Арендатор переезжать несколько раз и арендовать более одной Собственности?

Может ли Арендатор иметь более одного договора аренды одновременно? Можно ли арендовать для проживания и бизнеса?

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

Внешний ключ входит в таблицу many в отношении «один ко многим».

Если у вас много ко многим, вам понадобится таблица JOIN с двумя внешними ключами.

person duffymo    schedule 24.11.2013
comment
Это для управления небольшой недвижимостью, в общей сложности 17 арендных квартир и арендаторов. Все, что я хочу сделать, это добавить / удалить арендаторов по каждому адресу собственности и отслеживать, заплатили ли они депозит и сумму, во всяком случае, на данный момент. Я собираюсь снова отредактировать свой вопрос, потому что, когда я экспортировал свою базу данных и таблицы, она выглядит иначе, чем то, что я опубликовал. - person TraciBee; 24.11.2013
comment
Ничто из этого не меняет того факта, что адрес свойства принадлежит таблице свойств. Не позволяйте вашему недостатку возможностей реляционного проектирования поставить под угрозу реальность системы, которую вы хотите смоделировать. - person duffymo; 24.11.2013