You can do whatever you want until you’re blocked by something beyond the scope. In order to help you, you have to pass more context about what you plan to do.
“External” Id can mean several things to me. It can mean that you have your own way of tracking IDs. It can mean that you wanna keep an old external ID and make it queriable (e.g. https://dgraph.io/docs/mutations/external-ids/).
This your last question is ralated to mutation. In mutation the only identifier is UID. There’s no other. But you can use Upsert Block to do so. e.g https://dgraph.io/docs/mutations/external-ids-upsert-block/
You can (as the example in the links above) create nodes out of your old IDs. And then map the UIDs created for those nodes and use in your application. So you can use the UID of that ID node as an edge. Pointing to your target.