1) Деревня и Город эквивалентны - т. Е. Город или деревня, но не оба.
2) Правильно нормализованный БД будет иметь:
table countries
( country_id int primary key, country_name varchar(100) );
table cities # also villages
( city_id int primary key, city_country_id int, city_name varchar(200),
city_is_village bool );
table streets
( street_id int primary key, street_city_id int, street_name varchar(200) );
table addresses # we'll stop normalizing here
( addr_id int primary key, addr_street_id int, addr_building_number int,
addr_office int, addr_flat_number int, addr_room_number int );
# then to get the entire address, you would join the tables
SELECT addr_room_number, addr_flat_number, addr_office, addr_building_number,
street_name, city_name, city_is_village, country_name
FROM addresses
LEFT join streets ON street_id = addr_street_id
LEFT join cities ON city_id = street_city_id
LEFT join countries ON country_id = city_country_id
;