Как спроектировать базу данных моего приложения Django для размещения информации о нескольких уровнях элементов?
Я пытаюсь создать приложение на Django. Затрудняюсь с выбором схемы базы данных.
Существуют следующие таблицы:
1), таблица customer
:
- cust_name
- cust_addr
- cust_phone
- created_date
- ...
2), таблица customer_assets
- customer (внешний ключ указывает на таблицу
customer
) - asset_type
- asset
- asset_update_time
- asset_creation_time
- ...
Основная проблема заключается в активе, типе актива (asset_type), образец данных выглядит следующим образом:
asset_type asset
------------------------------------------
domain aaa.bb.example.com
domain *.corp.example.com
ip 10.1.2.3
ip 10.8.0.0/16
url http://aaaa
url http://bbbbb
url http://aaa.bb.example.com/app1/login
email xxx@example.com
есть некоторые активы, такие как *.corp.example.com
, 10.8.0.0/16
. Приложение должно выполнить обнаружение и найти под ними другие активы, например:
- aaa.corp.example.com
- bbb.corp.example.com
- ccc.corp.example.com
- 10.8.2.2
- 10.8.2.3
- ...
Затем приложение просканирует открытые порты на каждом из них, например:
- aa.corp.example.com. (22, 80, 1080)
- 10.8.2.2 (21, 139, 3306)
Затем приложение может просканировать все порты на активах, чтобы найти урлы, например:
- aa.corp.example.com 80 /home.html
- aa.corp.example.com 80 /admin.html
- bb.corp.example.com 443 /console
Обратите внимание, что:
- данные в
customer_assets
в основном предоставляются клиентом - данные в
customer_assets
содержат данные различных типов, например,
1), поддомены с подстановочным знаком (*.corp.example.com) и точные поддомены (aaa.bb.example.com).
2), точные поддомены в поддоменах с подстановочным знаком (*.corp.example.com) будут позже обнаружены
как лучше всего организовать схему базы данных?
1), является ли текущая схема базы данных для customer_assets
нормальной?
2), где хранить обнаруженные поддомены типа aaa.corp.example.com
? Нужно ли их добавлять в customer_assets
как новый элемент,
или создать для него новую таблицу?
3), где хранить данные ports
, и URL для каждого port
?
Клиенту может потребоваться поиск данных по доменному имени, по порту, по строкам в URL и т.д.
Спасибо
Я создал таблицу 1), таблицу customer
и таблицу customer_assets
, и она работает нормально.
но борется, как хранить данные, обнаруженные для домена *.corp.example.com
, и как хранить более подробную информацию, обнаруженную как порты для каждого поддомена (например, порты 80, 22 для aaa.corp.example.com
), и URL, обнаруженные для каждого порта (например, /admin.html
для aaa.corp.example.com
на порту 80
)